2016-08-29 8 views
0

Я использую сокращение, чтобы сохранить состояние представления, поэтому, когда пользователи возвращаются, у них есть тот же вид и настройки, которые они выбрали до этого, я делаю это излучающие события на сервер и реплицируя изменения в хранилище на бэкэнд и хранении состояния в базе данных.Проверка целостности состояния редукции при инициализации

Каждый раз, когда пользователь входит в систему, мы получаем его настройки с помощью этого CIDE:

if(!user.state){ 
      socket.store = redux.createStore(reducer); 
     }else{ 
      socket.store = redux.createStore(reducer, user.state); 
     } 

Проблема возникает, когда я хочу, чтобы добавить новые редукторы для новых возможностей и состояния, сохраненные в базе данных устаревает, когда я попробуйте передать старый объект состояния функции createStore я получаю

[Error: Reducer "fooReducer" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may n 
ot be undefined. 

И мои восстановителей:

//this is a new reducer 
function fooReducer(state, action) { 
    if (!state) { 
     state = defaultState.foo 
    } 
    switch (action.type) { 
    ... 
     default: 
      return state 
    } 

} 

module.exports = combineReducers({ 
    theme: themeReducer, 
    settings: settingsReducer, 
    foo: fooReducer, 
}); 

Не следует ли проверять редуктор на неопределенное состояние этими экранами? Какова была бы лучшая практика для обработки этого и будущих сценариев, когда я хочу добавить новые редукторы?

Я имею в виду, чтобы написать функцию, чтобы проверить, если каждая клавиша на состояние инициализации, но это похоже на то, редуктор должен быть уже делать

ответ

0

я обнаружил, что проблема была, потому что я не ставил значение для foo в состоянии по умолчанию

defaultState.foo = {x: 'var'} 
Смежные вопросы