В вашем случае обновления поля appBgColor
в вашем штате ваша реализация редуктора равна , правильная .
Обратите внимание, что когда вы возвращаете { ...state, appBgColor: action.payload}
, вы не изменяете состояние, а фактически создаете копию существующего состояния, применяете изменение и возвращаете его. Это гарантирует, что состояние является неизменным , т.е. оно не изменяется напрямую.
Вам потребуется использовать такие функции, как слайс, конкатат и т. Д., Когда вы обновляете вложенные элементы в своем состоянии. Например, когда вам нужно удалить элемент из массива в вашем состоянии, вам нужно будет использовать slice
, как показано ниже.
const index = state.findIndex(a => a.id === action.id)
return [
...state.slice(0, index), ...state.slice(index + 1)
]