Объедините useReducer с useState в одном компоненте - PullRequest
0 голосов
/ 09 апреля 2019

Я использую реагирующие хуки useReducer, которые содержат мое состояние, скажем, у меня есть 3 поля состояния - a, b и c. Эти поля связаны друг с другом и в основном меняются вместе, поэтому функция редуктора является связной. Если у меня есть другое поле состояния d, которое не связано с другим состоянием - я должен использовать оба значения useState (для d) и useReducer (для a, b и c) в тот же компонент или лучше использовать ту же функцию редуктора? Более того - если у меня есть больше полей, таких как d, которые меняются в похожих местах, я должен использовать 2 отдельных редуктора? Какова лучшая практика для этого случая?

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Я стараюсь абстрагировать useReducer от глобального контекста и использовать useContext в сочетании с редуктором для получения состояния моего приложения. Однако иногда имеет смысл использовать useContext и useState, если компонент имеет внутреннее состояние. При этом я не думаю, что на данный момент есть какие-то жесткие и быстрые правила для хуков, поэтому я бы прочитал больше и сделал лучший выбор для вашей команды. При этом я согласен с тем, что сказал IliasT о состоянии переполнения в одно состояние использования. Если вы используете хук useState, используйте один для каждого элемента состояния и не пытайтесь создать объект, управляющий состоянием.

0 голосов
/ 09 апреля 2019

Мой совет - использовать useState и useReducer, учитывая, что useReducer - это просто абстракция вокруг useState.

Точно так же, как вы не пытались бы втиснуть все состояниекомпонента в один useState хук, вам, вероятно, также следует избегать этого для useReducer.

...