首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DvaJS -将保存状态从localStorage加载到状态

DvaJS -将保存状态从localStorage加载到状态
EN

Stack Overflow用户
提问于 2018-10-22 19:06:15
回答 1查看 621关注 0票数 0

我启动我的dvajs应用程序如下所示。我用localStorage钩子将状态存储到onStateChange中。将状态保存到localstorage中运行得很好。

代码语言:javascript
复制
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中。在初始载荷下负载很好。

但问题是,当模型设置状态支持被模型的默认数据替换时。例如,这里是我的模型定义之一。

代码语言:javascript
复制
export default {

    namespace: 'training',

    state: {
        videos: [],
        current: {}
    }, ....
    ....

所有加载的初始持久化数据将被此模型替换。那么,如何正确地将localstorage值加载到状态以使其保持不变?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-22 21:06:34

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

修正码

Dva Init

代码语言:javascript
复制
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);
    }
});

模型

代码语言:javascript
复制
export default {

    namespace: 'training',

    initialState: {
        videos: [],
        current: {}
    },
    state: null
     ....
    ....
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52936186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档