Я пока только поглядываю в сторону реакта и после прочтения возник вопрос насчёт того, что в редьюсер передаётся состояние, которое нельзя изменять. Если изменять, могут быть нежелательные последствия. Не лучше было ли тогда, если бы редьюсер вызывался с копией состояния, которую можно и даже нужно изменять, впрочем если создать новое тоже ничего плохого не произойдёт?
Есть какая-то логика именно в том как сейчас?
Ну одно из простейших объяснений — если вы трогаете одно поле состояния, а другие не меняете, то компоненты, которые подписаны через connect() на поля, которые вы не трогаете, не будут перерисованы впустую.
Это правда. Но в таких случаях можно воспользоваться библитекой Immutable.js от facebook, которая реализует неизменяемые структуры данных (множества, списки, хэши) с дешёвыми изменениями.
С 0 до 1. Разбираемся с Redux