【发布时间】:2017-02-01 03:21:45
【问题描述】:
即使在页面重新加载后,我也需要保留 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”值。并且列表对象包含对象的嵌套级别。在迭代和访问它时,它的所有“value”属性 String 列表对象内的嵌套对象的值都被转换为对象
从这个讨论 https://github.com/erikras/redux-form/issues/576 我知道我们必须在 value 属性上调用 value 属性,像这样
listings[0].entry.value.value
这里的 value 是一个字符串,但是当它转换为对象时,我需要调用 value.value。
那么有什么快速解决方案可以解决这个问题吗? 还是在最新版本的 redux-form 中修复?我目前正在使用 "redux-form": "^4.2.0",
【问题讨论】:
-
-
redux-persist 非常适合这个。
标签: reactjs react-redux reactjs-flux redux-form redux-framework