Не рекомендуется изменять состояние, так как реакция зависит от неизменности для многих его функций.
Рассмотрим, например, методы жизненного цикла или повторное рендеринг после сравнения состояния / реквизита (PureComponents)
Проблема с изменяющимся состоянием заключается в том, что когда эти значения передаются дочерним элементам в качестве реквизитов, и вы пытаетесь принять какое-то решение на их основе в зависимости от того, обновилось ли состояние, предыдущий и текущий реквизиты будут иметь одинаковое значение, и, следовательно,сравнение может завершиться ошибкой, что приведет к ошибочному приложению
Правильный способ обновления состояния -
case "SELECT_CHILDREN":
const id = 2;
return {
...state,
[id]: {
...state[id],
isChecked: !state[id].isChecked
}
};