Почему выгодно менять состояние с помощью действий в редуксе? - PullRequest
0 голосов
/ 19 марта 2019

От: https://redux.js.org/introduction/three-principles

Состояние только для чтения. Единственный способ изменить состояние - это создать действие, объект, описывающий произошедшее. Это гарантирует, что ни представления, ни сетевые обратные вызовы никогда не будут писать напрямую в состояние. Вместо этого они выражают намерение преобразовать государство. Поскольку все изменения централизованы и происходят один за другим в строгом порядке, не существует тонких расовых условий, на которые стоит обратить внимание. Поскольку действия представляют собой просто простые объекты, их можно регистрировать, сериализовать, хранить и затем воспроизводить для целей отладки или тестирования.

Из-за этого у меня возникает два вопроса ...

  1. Как избыточное принудительное выполнение изменений происходит в строгом порядке? Если я изменяю состояние синхронно, тогда я не понимаю, почему это когда-либо будет проблемой. Если я хочу изменить состояние после асинхронного события 1 и асинхронного события 2 по порядку, не нужно ли мне делать что-то вроде использования обратных вызовов или обещаний независимо от того, использую ли я избыточность, чтобы гарантировать, что состояние изменяется в ожидаемом порядке?
  2. Почему проще регистрировать действия? Если бы я не использовал избыточность, разве я не мог просто console.log вносить каждое изменение состояния, чтобы облегчить отладку и тестирование? Я просто экономлю время написания console.log при каждом изменении состояния, изучая приставку?

1 Ответ

0 голосов
/ 19 марта 2019

Чтобы ответить на ваши вопросы:

  1. Выполнение RedEx является синхронным, поэтому, когда вы отправляете действие, вы выполняете метод в хранилище Redx, который вызывает редуктор для вычисления новогогосударство.Понятие «асинхронных действий» не существует в Redux, поэтому у вас есть множество решений для их включения: redux-thunk, redux-saga, redux-observable и так далее.Все библиотеки «асинхронных действий» в конечном итоге должны синхронно выполнять функцию диспетчеризации, чтобы изменить состояние избыточности.

  2. В хорошо написанных приложениях с избыточностью изменения любого состояния, содержащиеся в хранилище избыточности, могутбыли вызваны только действием, отправленным откуда-то из приложения, которое имеет доступ к функции отправки.Это позволяет вам полностью контролировать и знать, где и как происходят изменения состояния.Это основной пункт продажи редукса: «контейнер с предсказуемым состоянием».Вы, конечно, можете хранить свое локальное состояние в некоторой глобальной переменной и вручную изменять его, но тогда вам нужно будет использовать что-то вроде Object.observe (которое на самом деле устарело без видимой замены) в этой переменной состояния, чтобымонитор изменений к нему.

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