即使在页面重新加载后,我也需要保留 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 react 组件中访问“listings”、“pgu”、“commonFields”值。并且列表对象包含对象的嵌套级别。在迭代和访问它时,它的所有“值”属性列表对象内嵌套对象的字符串值都被转换为对象
从这个讨论 https://github.com/erikras/redux-form/issues/576 我知道我们必须在 value 属性上调用 value 属性,像这样
listings[0].entry.value.value
这里的值是一个字符串,但是当它转换为对象时,我需要调用 value.value。
那么有什么快速解决方案来解决这个问题吗?还是在最新版本的 redux-form 中修复?我目前正在使用“redux-form”:“^4.2.0”,