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

Combine useReducer with useState in the same component

我使用包含我的状态的反应钩子 useReducer,假设我有 3 个状态字段 - abc。 这些字段联系在一起并且大部分一起变化 - 所以 reducer 函数是内聚的。 如果我有不同的状态字段 d 与其他状态不一致 - 我是否应该同时使用 useState(对于 d)和 useReducer(对于 a ,bc) 在同一个组件中还是使用相同的 reducer 函数更好?此外 - 如果我有更多像 d 这样的字段在相似的地方发生变化 - 我应该使用 2 个单独的减速器吗? 这种情况下的最佳做法是什么?

我的建议是同时使用 useStateuseReducer,因为 useReducer 只是对 useState 的抽象。

就像您不会尝试将组件的所有状态塞进一个 useState 挂钩一样,您可能也应该避免为 useReducer.

这样做

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