Разве мы не продублируем, когда передаем избыточный магазин в реквизит и снова настроим этот реквизит? - PullRequest
0 голосов
/ 09 июня 2018

Это наиболее распространенная вещь, которую делает каждый разработчик REACT .... Мы используем избыточное хранилище для поддержки модели приложения, если мы хотим использовать информацию хранилища, нам нужно создать объект свойства с помощью метода subscription (connect ()), где mapStateToPropsсоздает клонированную версию хранимого объекта только для чтения, чтобы реагировать на PROP.Здесь это не закончилось, так как доступное свойство доступно только для чтения, мы продолжили создавать еще один экземпляр, чтобы реагировать на состояние (чтобы сделать его доступным для записи) того же объекта, используя setState (), который является еще одной клонированной версией того же объекта.В конечном итоге мы создаем несколько версий одного и того же объекта, и странная вещь заключается в том, что мы можем продолжать мутировать любой из этих трех объектов, не зная, что другой может стать настоящим хаосом ..... Есть ли способ предотвратить это?... Если это так, то это несомненно повышает производительность и предотвращает вред от клонированных объектов.

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Метод setState используется для изменения локального состояния, в то время как приставка (с использованием действий и редукторов) используется для изменения глобального состояния.Обычно, как вы сказали, существует ситуация, когда вы сохраняете их оба, поэтому мы синхронизируем оба состояния.Но оба они не указывают на один и тот же объект, и созданное локальное состояние не доступно для записи.Он также не является изменяемым.

Что касается состояния избыточности (глобального), то оно изменяется только с помощью действий и редукторов.Мутирование любого из состояний напрямую является анти-паттерном реакции.Избыточное состояние следует только читать, а не изменять.Местное государство также не должно быть видоизменено напрямую.Его следует изменять только с помощью метода setState

Теперь, на ваш вопрос, если состояние избыточности передается как проп, то изменения в состоянии избыточности автоматически переопределяют компонент.Но разработчики обычно делают клон (другой объект) из состояния редукции в локальное состояние, поскольку повторный рендеринг выполняется быстро для локального состояния, но изменения, внесенные в локальное состояние, не реплицируются в состояние редукции автоматически.

0 голосов
/ 09 июня 2018

В реакции реквизит и состояние не должны смешиваться.Это не вызовет каких-либо проблем при перепутывании, если оно управляется должным образом, но при клонировании реквизитов не требуется указывать, можем ли мы использовать то же значение реквизитов при рендеринге.Так что да, нет необходимости копировать реквизиты в состояние, так как изменения в обоих триггерах повторного рендеринга.

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