Когда запускается действие избыточности, по умолчанию оно проходит через все редукторы.
В общей архитектуре редуктора мы используем что-то вроде синтаксиса {switch}, и если редуктор не имеет ответа {case } к действию действие будет go через {default} параметр в редукторе.
const actionA = payload => (dispatch, getState) => dispatch({ type: 'a', payload })
const reducerA = (state = {}, action) => {
switch (action.type) {
case 'a':
// action will be reduced here
return action.payload
default:
return state;
}
}
const reducerB = (state = {}, action) => {
switch (action.type) {
case 'b':
return action.payload
default:
// action will be reduced here
return state;
}
}
Поэтому просто добавьте регистр {types.UPDATE_CHILD} в редуктор семейства.
const reducerB = (state = {}, action) => {
switch (action.type) {
case 'b':
return action.payload
case 'a':
// now action will be reduced here
return action.payload
default:
return state;
}
}
Еще одна вещь в вашем редукторе: вы манипулируете состоянием непосредственно на редукторе, а не на возврате, измените его на -
case types.UPDATE_CHILD: {
return state.filter(child => child.id === action.id ? action.updatedChild : child);
}