поэтому в моей реакцию Redux проекта я обновляя массив в моем государстве, как это:Использование неизменяемых js, есть ли лучший способ обновить значение этого массива в неизменяемом объекте?
this.setState(fromJS(this.state).set(e.target.id, fromJS(this.state).get(e.target.id).push(e.target.value)).toJS());
Так просто кратко разбить его я беру равнину расслоения плотного состояния объект поворачивая его неизменным затем установить выбранное значение с новая неизменяемая копия массива с новым значением, вдавленным.
Это казалось мне единственным способом сделать это, убедившись, что я рассматриваю состояние как неизменяемое значение. Я думал, что я могу это сделать:
this.setState(fromJS(this.state).set(e.target.id, this.state[e.target.id].push(e.target.value)).toJS());
Выше я предполагаю, мутирует исходное состояние, поэтому я полагал, что я не должен использовать его. Является ли метод, который я выбираю первым, самый эффективный способ убедиться, что все неизменное? Я чувствую, что собираюсь и снова создаю новый объект, чтобы получить новое значение массива, кажется слишком сложным, поэтому мне интересно, есть ли лучший способ сделать это.
Опять мой основной акцент делается на этой линии: .set(e.target.id, fromJS(this.state).get(e.target.id).push(e.target.value)
где я создаю неизменяемый объект дважды
Вы не хватает точки неизменных данных? Вы в настоящее время просто используете Immutable.js, чтобы сделать _very_ фантазии глубокого клонирования вашего объекта. – Prinzhorn
Думаю? Можете ли вы объяснить, что вы имеете в виду? Разве это не то, что я делаю выше, убедившись, что я устанавливаю свое состояние на новый объект, а затем мутирую оригинал? По-настоящему любопытно, потому что честно это все ново для меня, и я бы сказал последним, что знаю, что, черт возьми, я делаю. –
Являются ли значения в вашем состоянии равными объектами/массивами или являются ли они неизменными.Map/List и т. Д.? Если они есть, то вам не нужно быть уверенным, что вы не мутируете оригинал, потому что вы ** не можете **. – Prinzhorn