Рассматривая такой редуктор (я использую библиотеку redux-action )
export const reducer = handleActions({
[REMOVE_CATEGORY]: (state, action) => ({
...state,
// Do other stuff...
}),
[TOGGLE_CATEGORY]: (state, action) => {
const category = action.payload.category
const selectedCategory = _.findWhere(state.categories, {name: category.name})
const activeCategories = _.filter(state.categories, {active: true})
if (activeCategories.length < 4 && selectedCategory.active === true) {
return {
...state,
didToggleFail: true
}
}
return {
didToggleFail: false,
isRequesting: false,
categories: state.categories.map(
category => category.name === action.payload.category.name ? {...category, active: !category.active} : category
)
}
},
[OTHER_ACTION]: (state,action) => ({
...state,
// Do other stuff..
})
})
Я сталкиваюсь с простой проблемой, которая может быть связана с моим плохим подходом к решению.;
Каждый action
в моем редукторе в основном распространяет ранее существовавшее состояние, но есть поле didToggleFail
, которое устанавливается на основе различных условий.
Теперь моя проблема: didToggleFail
, который я использую для синхронной проверки, будет находиться в моем состоянии навсегда до тех пор, пока не будет сброшено.
Я использую didToggleFail
внутриcomponentDidUpdate
вот так:
componentDidUpdate() {
if(this.props.reducer.didToggleFail)
showError()
}
...
Как вы можете видеть, моя проблема в том, что, если я отправляю другие действия и поле все еще установлено на true
, это всегда вызовет ошибку.
Как справиться с этой ситуацией?