2016-09-27 17 views
0

だから私は、これは<div>内部<div>内部<input>を作成します...React:ライブラリ内のコンポーネントに小道具を追加するには?

<div> 
    <Search items={ITEMS} /> 
    </div> 

を以下の方法で検索を反応させると呼ばれるコンポーネントsomeone else wroteを使用しています。 <input>に小道具onKeyDown={ this.myMethod }を追加する必要があります。これを達成する最良の方法は何ですか?私はnode_modules内のコードを編集するのは答えではないと感じています。ありがとうございました!

答えて

1

ライブラリは、具体的にそのコンポーネントの子どもたちに小道具を渡す方法を提供しない限り、それを行うには、他の方法はありません。反応成分は、デザインによって少し「不透明」なので、内部状態や子供たちの周りにはいられません。したがって、この場合、実際にはに対応するためにライブラリのコードを編集する必要があります。

しかしそれは行うには、そのような威圧的なものではありません。あなたのイベントハンドラを小道具としてライブラリのコンポーネントに渡してから、ライブラリ内で<input>要素がレンダリングされている場所を見つけて、いつものようにイベントハンドラを与えます。私は同様の方法で多くのReactライブラリを編集しなければなりませんでした。

編集:実は、私はあなたが反応し、プレーンなJavaScriptを使用してinput要素に直接イベントハンドラを追加するだけでバイパスできることを追加する必要があります。例えば、ライブラリコンポーネントの親のcomponentDidMountcomponentWillUnmount機能であなたはaddEventListenerまたは類似を使用して、それぞれ、イベントハンドラを追加し、削除します。少しより多くの仕事と反応するの内側にあなたが同じことを行うことができますしかし、それは、独自の機能を反応させるために回避策を一緒にハックする一般悪い考えをです。また、リスナーを追加する要素を正確に特定することはかなり難しいかもしれません。

関連する問題