【发布时间】:2018-04-21 09:55:37
【问题描述】:
如何使用 Redux 保存在 localStorage 中,只保存一个特定的状态?
比如我在list reducer中的状态定义如下:
state = {
companies: [],
currentDisplay: '',
recordNotFound: false,
}
这是我的 combineReducer 文件:
const rootReducer = combineReducers({
list: listReducer,
form: formReducer
})
localStorage.js:
export const loadState = () => {
try {
const serializedState = localStorage.getItem('state')
if (serializedState === null) {
return undefined;
}
return JSON.parse(serializedState)
} catch (err) {
return undefined
}
}
export const saveState = (state) => {
try {
const serializedState = JSON.stringify(state)
localStorage.setItem('state', serializedState)
} catch (err) {
// to define
}
}
在浏览器重新加载后,我只希望预加载 companies: [{obj1}, {obj2}, ...] 数组,并将其余状态重置为默认值 f.e. currentDisplay: '' 等于 ''。
现在负责这个操作的代码是这样的:
store.subscribe(() => {
saveState({
list: store.getState().list
})
})
它显然存储了整个列表...... 我想我可以使用 setState() 在 React 中轻松地重置这些参数,但我想正确地做到这一点。
【问题讨论】:
标签: javascript object redux local-storage