2017-06-19 2 views
0

単純な入力還元フォームフィールド内に簡単なデータ注入を行いたい。 私に説明させてください:入力フィールドのリスナーで「変更」を使用

私は1つの大きなフォームを持っていて、ユーザーが "LastName"入力内に書いているとき、私はちょうど "LastNameFather"として2番目のフィールドに値を注入したいと思います。

非常にシンプル、

私はformvalueSelectorを行い、最初の入力値を取得します。

const selecor = formValueSelector('MyForm') 

const mapStateToProps = (state,props) => { 

    const name = selector(state,"nameOne") 

    return { 
    name : name 
    }} 

そして私はcomponentWillReceivePropsを使って書き込みを処理し、私の値を挿入するために小道具の変更を使用していました。

componentWillReceiveProps = (props) => { 
    props.name != null ? props.change("name2",props.name) : null 
} 

ここで、最初のフィールドの中に書き込むと、無限に再レンダリングされます。ご覧のとおり、私は2番目のフィールドを変更する前にprops.name!= nullをテストする必要があります。

とにかく、私は何を逃したのですか?

おかげ

+0

dispatchを 'props.change'にバインドしましたか? –

+0

うん、私の行動が正しく派遣されているのがわかる。 私は何が間違っているのか分かりません。 – GreGGus

+1

私はあなたの道を行くつもりはありません@GreGGus、私は 'lastname'の' Field'に 'onBlur'リスナーを行い、'()=> props.change(...) 'に行きます。 –

答えて

1

氏GreGGus、小道具が変更されていない場合でも、この方法(componentWillReceiveProps)を呼び出し、そうであれば現在と次の値を比較することを確認してリアクトのJS公式ドキュメントを反応させるの「注意に従っ親コンポーネントによってコンポーネントが再レンダリングされるときに発生する可能性があります。 これを試すことができます。

関連する問題