0

ページのリロード後も redux フォーム フィールドを保持する必要があります。したがって、これに対する私のアプローチは

  • 最初にページが更新される前に、コンポーネントのすべてのフィールド値が componentDidUpdate メソッドの localstorage に保存されます componentDidUpdate(prevProps, prevState) { prevProps.fields ? localStorage.setItem('fields', JSON.stringify(prevProps.fields)):null prevProps.fields ? localStorage.setItem('fields', JSON.stringify(prevProps.fields)):null }

  • 次に、ページを更新した後、localstorage に使用可能なフィールドがあるかどうかを確認し、それらのフィールド オブジェクトを reduxform の初期値に直接割り当てています。

let reduxFormFunc = reduxForm( { form: 'rentSelection', destroyOnUnmount: false, fields: guestEntryFields, validate, initialValues: getInitFields() }, selectProps ) function getInitFields() { let initValues = {pgu: defaultpgu} if(localStorage.getItem('fields') && JSON.parse(localStorage.getItem('fields')).listings.length>0){ console.log('selecting and assigning fields from localstorage') let fields = JSON.parse(localStorage.getItem('fields')) console.log(fields) initValues['commonFields'] = fields.commonFields initValues['listings'] = fields.listings initValues['pgu'] = fields.pgu } console.log(initValues) return initValues } export default reduxFormFunc(GuestEntry)

これで、GuestEntry 反応コンポーネントで「listings」、「pgu」、「commonFields」の値にアクセスできるようになりました。また、リスト オブジェクトにはネストされたレベルのオブジェクトが含まれます。反復およびアクセス中に、リストオブジェクト内のネストされたオブジェクトのすべての「値」属性文字列値がオブジェクトに変換されます

この議論から https://github.com/erikras/redux-form/issues/576 値属性で値プロパティを呼び出す必要があることを知りました。

listings[0].entry.value.value

ここで値は文字列ですが、オブジェクトに変換されるため、value.value を呼び出す必要があります。

この問題を解決する簡単な解決策はありますか? それともredux-formの最新バージョンで修正されていますか? 私は現在 "redux-form": "^4.2.0" を使用しています。

4

2 に答える 2

0

このバージョンでは別の方法が見つからなかったので、オブジェクトのインスタンスとして値を取得した場合、「object.value」を使用して値を返すようにコードを更新しました。それ以外の場合は、単に値を返すだけです。

于 2016-09-27T06:31:46.820 に答える