DvaJS - загрузка сохраненного состояния из localStorage в состояние - PullRequest
0 голосов
/ 22 октября 2018

Я запускаю мое приложение dvajs, как показано ниже.Где я храню состояние в localStorage с onStateChange hook.Сохранение состояний в 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 в состояние, чтобы оно оставалось?

1 Ответ

0 голосов
/ 23 октября 2018

Используйте initialState вместо defaultState в параметрах dva.А для моделей установите 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
     ....
    ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...