Redux-Form v6で使用する再利用可能なフォームコンポーネントグループ(セクション?)を作成しようとしています。理想的には、を知りたくありません。がフォーム内で使用されているので、(ルートまたはネストされた)フォーム内のどこでも使用できます。これどうやってするの?Redux-Form v6で再利用可能なフォームコンポーネントグループを作成するにはどうすればよいですか?
たとえば、私はこのように、ReduxのフォームのField
アドレス1、市、州、郵便番号、などのために使用していますAddress
コンポーネントを持っている:
class Address extends React.Component {
render() {
return (
<Field
component={MyReduxFormInput}
name="address1" // <== How to name for generic case?
/>
)
}
}
ここでは単純化されたMyReduxFormInput
です:
module.exports = field => {
return <input {...field.input} />
}
私はユーザーの住所を収集する必要があるフォームを作成しているだけでなく、専門家の参考文献から複数の住所を収集しています。だから、Address
をルートに1回、入れ子にして複数回使用したいと思います。私が上に書いたように、ちょうどAddress
を使うことはできません。なぜなら、それはルートアドレスでは機能しますが、ネストされた状況では機能しないからです。 FieldArray example docsに示されるように、Field
に供給されるname
は、name={`${member}.address1`}
である必要があります。しかし、それはルートではうまくいかないでしょう。
Address
コンポーネントがmember
引数を取るのは、ルートで空白になるという考えです。私はそれを試み、報告します。しかし、私はRedux-Form Field
コンポーネントが自動的にネストレベルを認識していると思っていました。階層を検索し、必要な接頭辞name
を知ることができます。
私は、これは 'React.Children'を使用して(階層を横断関与解決しようと無駄な時間は、 'name'引数を変更して接頭辞を含めることによって、' Field'の使用方法を動的に変更することができます。これはうまくいきましたが、新しいコンポーネントを作成しているため、ユーザーがフィールドをクリックしようとしたときなどの状態でバグが発生します(複数回クリックする必要があります)。しかし、代わりに単に階層を調べることができるかどうか、いつでも、 'FieldArray'が見つかり、その名前を名前接頭辞として使用しますか? –