我使用包含我的状态的反应钩useReducer
,假设我有3个状态字段 - a
,b
和c
。这些领域联系在一起并且大多数一起变化 - 因此减速器功能具有凝聚力。如果我有不同的状态字段d
与其他状态没有凝聚力 - 我应该在同一组件中同时使用useState
(对于d
)和useReducer
(对于a
,b
和c
),还是最好使用相同的reducer函数?此外 - 如果我有更多像d
这样的领域在类似的地方发生变化 - 我应该使用2个单独的减速器吗?这种情况的最佳做法是什么?
我的建议是使用useState
和useReducer
,鉴于useReducer
只是围绕useState
的抽象。
就像你不会试图将组件的所有状态塞进一个useState
钩子一样,你可能也应该避免为useReducer
做这个。
我倾向于尝试将useReducer
抽象为全局上下文,并将useContext
与reducer结合使用以获取我的应用程序状态。但是,如果组件具有内部状态,有时使用useContext
和useState
是有意义的。话虽这么说,我认为目前没有任何严格的快速规则,所以我会更多地阅读并为你的团队做出最好的选择。话虽如此,我确实同意IliasT所说的关于将状态填入一个useState的内容。如果你使用useState
钩子为每个状态使用一个,不要尝试制作一个控制状态的对象。