将useReducer与useState合并在同一组件中

时间:2019-04-08 23:28:30

标签: reactjs react-hooks

我使用包含状态的React钩子useReducer,假设我有3个状态字段-abc。 这些字段联系在一起,并且大多数情况下都在一起变化-因此,减速器的功能具有凝聚力。 如果我有其他状态字段d与其他状态不兼容-我应该同时使用useState(对于d)和useReducer(对于abc)在同一组件上,还是最好使用相同的reducer函数?此外-如果我有更多类似d之类的字段在相似的地方更改-我应该使用2个单独的reducer吗? 这种情况下的最佳做法是什么?

2 个答案:

答案 0 :(得分:0)

鉴于useState只是useReducer的抽象,我的建议是同时使用useReduceruseState

就像您不会尝试将组件的所有状态塞入一个useState挂钩一样,您可能还应该避免对useReducer执行此操作。

答案 1 :(得分:0)

我倾向于尝试将useReducer抽象到全局上下文,并将useContext与reducer结合使用以获取我的应用程序状态。但是,有时如果组件具有内部状态,则使用useContextuseState是有意义的。话虽这么说,我认为目前没有任何适用于钩子的硬性规定,因此,我将阅读更多内容并为您的团队做出最佳选择。话虽如此,我确实同意IliasT关于将状态塞入一个useState的说法。如果您使用useState钩子,则对每种状态都使用一个钩子,不要尝试制作一个控制状态的对象。