Javascript DvaJS—将保存的状态从本地存储加载到状态

Javascript DvaJS—将保存的状态从本地存储加载到状态,javascript,reactjs,dvajs,Javascript,Reactjs,Dvajs,我启动我的dvajs应用程序,如下所示。在这里,我使用onStateChange钩子将状态存储到本地存储中。将状态保存到本地存储中效果很好 const app = dva({ history: createBrowserHistory(), defaultState: getPersistedState(), onError(e) { message.error(e.message, /* duration */3); }, onState

我启动我的dvajs应用程序,如下所示。在这里,我使用onStateChange钩子将状态存储到本地存储中。将状态保存到本地存储中效果很好

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值正确加载到状态中,使其保持不变?

在dva选项上使用initialState而不是defaultState。对于模型,将state设置为null,如果您想添加任何默认道具,也可以使用initialState

修改代码 Dva初始化

模型

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
     ....
    ....