Когда я выбираю React state Vs Redux Store

Я изучаю Redux и часть, о которой я не понимаю, как это сделать, как я могу определить, как использовать состояние реакции в сравнении с редукционным хранилищем, а затем отправлять диспетчерские действия. из моего чтения до сих пор, похоже, я мог использовать состояние React вместо магазина Redux и все еще делать все. Я понимаю разделение проблем с использованием магазина Redux и только с 1 компонентом контейнера, а остальная часть - как компонент без гражданства, но как я могу определить, когда использовать React state Vs redux store не очень понятно для меня. Кто-нибудь может помочь?

Спасибо!

Ответ 1

Если состояние не должно использоваться совместно с другими компонентами, или состояние не нужно сохранять, когда компонент размонтирован, вы можете просто поместить его в состояние компонента.

Вы можете думать, что хранилище Redux является базой данных front-end, если у вас есть что-то вроде данных о продуктах, полученных из API, то магазин Redux является правильным местом; если у вас есть выпадающий компонент, который принимает isOpen prop, то родительский элемент этого выпадающего списка может просто сохранить dropdownIsOpen в качестве состояния компонента.

Для получения дополнительной информации, вот ответ от Дэна: https://github.com/reactjs/redux/issues/1287

Также вы сказали

только один контейнерный компонент, а остальная часть - как компонент без гражданства

Это неверно. У вас может быть несколько компонентов контейнера. Контейнерный компонент может также содержать другой компонент контейнера.

Ответ 2

Ты абсолютно прав. Redux (и вообще архитектура потоков) - это только инструменты формализма, которые помогают создавать большие приложения. Они вообще не нужны.

На самом деле интересная публикация, которую вы, возможно, не нуждаетесь в редукции, Дэн Абрамов, создатель сокращения, который может дать вам лучший ответ, чем я: https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367#.7093fm1z8

Ответ 3

Из книги:

Прежде всего, мы всегда должны помнить, что только минимальные необходимое количество данных должно быть введено в состояние. Например, если мы нужно изменить метку при нажатии кнопки, мы не должны хранить текст метки, но мы должны сохранить только булевский флаг, который говорит нам, была ли нажата кнопка или нет. Во-вторых, мы должны добавьте в состояние только значения, которые мы хотим обновить, когда событие происходит, и для которого мы хотим сделать повторный рендеринг компонента. Другой способ выяснить, является ли государство подходящим местом для хранить информацию, чтобы проверить, нужны ли данные, которые мы сохраняем вне самого компонента или его детей. Если несколько компоненты должны отслеживать одну и ту же информацию, мы должны рассмотрите возможность использования диспетчера состояний, такого как Redux, на уровне приложения.