我启动我的dvajs应用程序如下所示。我用localStorage钩子将状态存储到onStateChange中。将状态保存到localstorage中运行得很好。
const app = dva({
history: createBrowserHistory(),
defaultState: getPersistedState(),
onError(e) {
message.error(e.message, /* duration */3);
},
onStateChange(state){
window.localStorage.setItem('adligence', JSON.stringify(state));
console.log('state changed', state);
}
});现在,当页面刷新时,我希望将保存状态加载到应用程序中。因此,我编写了getPersistedState()并将持久化状态加载到defaultState中。在初始载荷下负载很好。
但问题是,当模型设置状态支持被模型的默认数据替换时。例如,这里是我的模型定义之一。
export default {
namespace: 'training',
state: {
videos: [],
current: {}
}, ....
....所有加载的初始持久化数据将被此模型替换。那么,如何正确地将localstorage值加载到状态以使其保持不变?
发布于 2018-10-22 21:06:34
在dva选项上使用initialState而不是defaultState。对于模型,将state设置为null,如果您想添加任何默认支持,也可以使用initialState。
修正码
Dva Init
const app = dva({
history: createBrowserHistory(),
initialState: getPersistedState(),
onError(e) {
message.error(e.message, /* duration */3);
},
onStateChange(state){
window.localStorage.setItem('adligence', JSON.stringify(state));
console.log('state changed', state);
}
});模型
export default {
namespace: 'training',
initialState: {
videos: [],
current: {}
},
state: null
....
....https://stackoverflow.com/questions/52936186
复制相似问题