私は5種類のボタンコンポーネントを用意しています。私が5つのコンポーネントすべてに持っている機能の1つは、ボタンをクリックするとボタンがフォーカスを失うことです(.blur()
を使用)。私はアクセシビリティ上の理由から:focusスタイルを持っていますが、ボタンがクリックされた後、私はfocusスタイルを失う必要があります。一般的に使用されている機能の重複を防ぐために、Reactで小道具を介してRefを渡します。
5つのボタンすべてにまったく同じ機能を記述するのではなく、この機能を処理するために別のコンポーネントを作成するのが理にかなっています。
私はこのようなことをする前にこのようなことをする必要はありませんでした。私は小道具を経由してリファレンスを渡すことは、私の現在の知識では、それは私が望むものを達成する唯一の方法だと思われます。私はそれが次のようになり、ページ上でレンダリングされるボタンの構成要素のうちの1つのこの内部やるとしたら
:
const Page =() => {
const loseFocus =() => {
this.btn.blur();
};
return (
<Button
onClick={loseFocus}
ref={(btn) => { this.btn = btn; }}
>
Toggle
</Button>
);
};
const Button = props => (
<button onClick={props.onClick}>
{props.children}
</button>
);
を私はすべてのボタンのためにこれを行うにはしたくありません私がこれまでに含んでいたコンポーネントは、理想的には、クリックされた後、すべてのボタンが自動的にフォーカスを失うことになりました。
$('.btn').on('click', function() {
$(this).blur();
};
私は私が知っている:私はそうのようなイベントリスナーを持つ(すべて5つのコンポーネントに共通のクラスである)私はすべての.btn
の要素をターゲット可能性がjQueryの中でこのような何かをした場合
プレーンなjavascriptで何か非常によく似たことをすることができますが、これはReactのベストプラクティスに対して起こるでしょうか?