我如下启动我的dvajs
应用。我使用onStateChange
钩子将状态存储到localStorage的位置。将状态保存到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
中。初始加载时加载良好。
但是问题是当模型设置状态prop被模型的默认数据替换时。例如,这是我的模型定义之一。
export default {
namespace: 'training',
state: {
videos: [],
current: {}
}, ....
....
所有加载的初始持久数据将被此模型替换。那么,如何正确地将localstorage
值加载到状态中以使其保持不变?
答案 0 :(得分:0)
在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
....
....