使用https://github.com/react-boilerplate/react-boilerplate v3.4.0,我希望在用户单击刷新按钮时保持状态元素。
我所做的:在app.js中,我改变了const initialState = {}; const store = configureStore(initialState, browserHistory);
至:
const initialState = loadState();
const store = configureStore(initialState, browserHistory);其中persist.js用于持久化state.global:
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({ global: state.get('global').toJS()});
localStorage.setItem('state', serializedState);
} catch (err) {
console.log(err);
}
};
在返回存储前的默认store.js中,我添加了以下内容:
store.subscribe(() => {
saveState(store.getState());
});显然,这可以通过以后的节流来改进。
因此,所发生的事情是在我验证了状态后,状态正确地持久化到本地存储,并且它被正确地从本地存储重新加载。
在身份验证之后刷新页面时,我开始跟踪store.js:
在运行createStore之前,初始化状态是:

跑完后:
const store = createStore(
createReducer(),
fromJS(initialState),
composeEnhancers(...enhancers)
);
store.getState()返回:

所以它所做的就是从减速器的初始状态取值。我不明白为什么会发生这种情况,因为redux文档声明:
您可以选择将初始状态指定为createStore()的第二个参数。这对于补充客户端的状态以匹配服务器上运行的Redux应用程序的状态非常有用。
因此,我的问题是,在屏幕刷新之后,如何使状态保持不变,以及为什么初始状态被减法器覆盖?
发布于 2017-07-25 11:44:38
结果,我的还原器中有一个错误--返回的是初始值,而不是默认操作的状态。
https://stackoverflow.com/questions/45274009
复制相似问题