Почему redux сам не делает копию хранилища?

202
12 февраля 2018, 05:34

Рассмотрим стандартный редьюсер:

function reducer(store, action) { ... }

Задача редьюсера при обработке события - сделать копию хранилища, изменив нужные элементы. Ну например:

function reducer(store, action) {
  return {...store, myProperty: 123}
}

Копию делать обязательно, иначе redux не сможет сделать сравнение двух хранилищ. Чем сложнее вложенность хранилища - тем "неудобнее" будет код (хотя и рекомендуется делать хранилище линейным, но иногда вложенность нужна).

Почему бы redux'у не сделать копию хранилища перед вызовом редьюсера?

// redux-библиотека
const newStore = {...store};
callReducer(newStore...)

Тогда сам reducer был бы более читаемым (?):

function reducer(store, action) {
  store.myProperty = 123;
  // легко работать со вложенностью
  store.orderList.preferOrder.Id = 1;
}

Есть ли тут какие то соображения - скорость, безопасность, еще что то? Интересно почему сделано именно так, а не иначе.

READ ALSO
SpookyJS/CasperJS/NodeJs клик по ссылкам перебирая объект

SpookyJS/CasperJS/NodeJs клик по ссылкам перебирая объект

На одном из шагов spookyJS/casperJS формируется объект, содержащий текст ссылок

167
XPath как выделять ссылки (<a>) с атрибутом?

XPath как выделять ссылки (<a>) с атрибутом?

Есть страница, где нужно выделить все ссылки <a> с классом 'foo'Я пытаюсь сделать так:

164