Как я могу получить неизменяемую версию объекта из store.getState ()? - PullRequest
0 голосов
/ 19 июня 2020

Я использую react-redux для проекта, над которым я работаю. Я заметил, что когда я беру объект из своего магазина и редактирую его, состояние объекта изменяется без отправки изменения (но не запускает повторную визуализацию компонентов, прикрепленных к этому объекту редуктора). Как я могу остановить изменение состояния без отправки? вывод по-прежнему тот, что я передал в changeNeonGreenColourValue () как «цвет», но страница не перерисовывается, чтобы показать это изменение. Я знаю, что нужно выполнить повторную визуализацию страницы, все, что мне нужно сделать, это отправить соответствующий случай редуктора, но я не хочу, чтобы объект состояния вообще изменялся, если у меня нет соответствующей отправки.

1 Ответ

0 голосов
/ 19 июня 2020

По-видимому, «стандартный» метод глубокого копирования для решения этой проблемы - выполнить JSON строковое преобразование и синтаксический анализ следующим образом: const copiedObj = JSON.parse(JSON.stringify(sourceObj)); К сожалению, если вы используете это на больших объектах, которые будут часто нуждаться в синтаксическом анализе, у вас будет производительность проблемы в вашем приложении, как и я, если у кого-то есть предложения по этому поводу, я их приветствую.

edit: так что и jQuery, и Loada sh имеют свои собственные реализации глубокого клонирования, которые должны быть лучше с точки зрения производительности: https://lodash.com/docs/#cloneDeep

Я лично реализовал loada sh, чтобы решить мою проблему, и он работал нормально, практически без проблем с производительностью. Я настоятельно рекомендую его вместо JSON .stringify.

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