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