2016-05-27 9 views
1

私は3つのフィールドで構成されるフォームを持っています。フィールド#1の値がtrueの場合、フィールド#3はフォームから削除する必要があります。フィールド#1の値がfalseの場合は、フィールド#3をフォームに戻す必要があります。フィールド値に基づいて動的に還元フォームを変更します

私はこれを行うのは簡単で、きれいな方法を見つけることはできません。

還元型サイトの例の1つで、フォームのコンテナの状態に基づいてフォームを動的に構築する方法が説明されています。コンテナはフィールド配列をフォームコンポーネントにpropとして渡し、フィールド配列を制御する入力フィールドはコンテナ内にあります。フィールド#1はフォーム内になければならないので、私は実際にはそのアプローチを使用することはできません。

フィールド#3をCSSで単純に非表示にしようとしましたが、検証ルールはどのフィールドが非表示かどうかを認識しません。

答えて

1

フォームの構造を変更する必要があり、単にフィールドを非表示にしたくない場合は、多分これはあなたのために動作しますが:

render() { 
    const {yourField1, yourField3} = this.props; 
    <div> 
    <Input type="text" {...yourField1} /> 
    { !yourField1.value && 
     <Input type="text" {...yourField3} />} 
    </div> 
+0

動作しますが、私はまだテストする必要がwoul私の検証関数のyourField1の値は、そうでなければyourField3はまだ検証されます。 –

+1

ドキュメントのhttp://redux-form.com/5.2.5/#/examples/synchronous-validation?_k=cpiwibのSynchronousValidationFormの例を見てください。yourField1が偽である場合にのみyourField3を検証します。 – parecementeria

+0

はい、そうです「私の検証機能でyourField1の値をテストする必要がある」と言っていたのです。私はフォームからフィールドを完全に削除する方法があると思った。とにかく、誰かがより良い解決策を思いついた場合に、もう少し長く質問を残しておきたいと思います。ありがとう@parecementeria! –