2016-12-03 4 views
1

Я не могу сбросить состояние по умолчанию; как это сделать? Я пробовал это, но все, что он делает, это добавить state, чтобы указать и называет его неопределенным.Как вернуть состояние в исходное состояние?

const initialState = { 
    name: null, 
    coins: 0, 
    image: null, 
}; 

export default function reducer(state = initialState, action = {}) { 
    switch (action.type) { 
    case types.ADD_GROUP_COINS: 
     return { 
     ...state, 
     coins: state.coins + action.coins 
     }; 
    case types.DELETE_GROUP: 
     return { 
     state: undefined 
     }; 
    default: 
     return state; 
    } 
} 
+0

Есть ли типы case.DELETE_GROUP: return initialState; 'не работает, или это не то, что вы намеревались? – Aurora0001

+0

Это дало бы мне 'state: {state: {initialState}}' вместо этого. Поскольку он присваивает его 'state' внутри' state' –

+0

Я не думаю, что это будет - 'return {state: initialState}' будет делать это - 'return initialState' должен работать так, как ожидалось. – Aurora0001

ответ

2

Чтобы сбросить состояние на initialState, просто return initialState, как это:

case types.DELETE_GROUP: 
    return initialState; 

Помните, что в редукторе, объект, который вы возвращаете это новое состояние. Вам не нужно, чтобы обернуть его в другом объекте, например:

return { 
    state: ... 
} 

Это даст вам свойство state в вашем государстве, которое не совсем то, что вам нужно.

From the documentation:

Редуктор является чистой функцией, которая принимает предыдущее состояние и действие, и возвращает следующее состояние.

Легко запутаться в этом, поэтому будьте осторожны! Взгляните на свой случай default, если вы все еще не уверены: вы возвращаете старую переменную state как новое состояние, не{ state: state }, которое вы по существу делаете с текущим обработчиком DELETE_GROUP.

+1

Благодарим вас за подробный ответ! Работает как шарм –

Смежные вопросы