DvaJS - загрузка сохраненного состояния из localStorage в состояние

Я начинаю свой 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 значение в состояние правильно, так что остается?

1 ответ

Решение

Использование initialState вместо defaultState на два варианта. И для моделей установлено state в null и если вы хотите добавить какие-либо реквизиты по умолчанию, используйте initialState также.

Модифицированный код

Два Инициатива

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
     ....
    ....
Другие вопросы по тегам