Клонирование объекта в редукторном редукторе - PullRequest
0 голосов
/ 01 апреля 2020

Я недавно выучил React и Redux, и когда мне показалось, что я освоился с этим, я был одержим этим.

В моем редукторе у меня сложилось впечатление, что Оператор распространения должен создать новый экземпляр объекта в месте разницы памяти. Тем не менее, использование === для сравнения объектов возвращает true, что, как я полагаю, означает, что объекты являются одинаковыми экземплярами. что это здесь мешает магазину напрямую. Я прочитал несколько редукционных документов и другие посты, которые заставляют меня поверить, что я все правильно настроил.

Любые ресурсы, чтобы научить меня этому вопросу, также очень ценятся.

ОБНОВЛЕНИЕ:

Ответ Джейси был именно тем, что происходило.

Этот ТАК описывает, какие метод для глубокого клона подойдет. Для меня, вероятно, я захочу хранить даты и другие данные, поэтому я решил использовать метод loda sh cloneDeep .

Так что теперь: console.log(cloneDeep(state) === state.loadcases); // false

1 Ответ

1 голос
/ 01 апреля 2020

Ваше предположение, что оператор распространения создает новый объект, верно, однако оно не делает клон объектов deep . Он копирует ссылки вложенных значений в новый объект, поэтому печатает, что они равны.

Если вы хотите глубоко клонировать что-то с вложенными значениями, вы не сможете использовать спред, вы должны использовать другой метод. Вы можете использовать библиотеку, такую ​​как loda sh, или что-то вроде JSON.parse(JSON.stringify(obj)), есть несколько вариантов, просто Google для чего-то вроде "Javascript deep clone object"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...