【问题标题】:ReactJS Redux State (global state) + React.Context (local state)ReactJS Redux State(全局状态)+ React.Context(本地状态)
【发布时间】:2020-08-06 15:05:37
【问题描述】:

我是 ReactJS 世界的新手,我需要您对 ReactJS 状态的意见。

我开始在我的应用程序中使用 Redux 来获取全局状态(全局模块),它非常适合,因为任何时候我需要状态,我都可以从任何地方调用它。 在 Redux 中,我喜欢保留通知,它们显示在我的应用程序的所有页面上,我也保留应用程序版本(演示/实时),换句话说,我尝试保持 Redux(全局状态)全局值。

在我的应用程序中,我也有页面,每个页面都有其特定的状态和组件。当客户端离开页面时,我不再需要它的状态。这就是为什么我不喜欢在 Redux 中保留状态,因为当它离开页面时,页面状态仍然保留在 Redux 中。 因此,在这种情况下,将页面状态保持在 React.Context (+ React.Reducer) 中似乎是正确的。

React.Context 优点:

  • 当客户端离开页面时,状态自动移除
  • 当客户端访问页面时,状态是干净的,因为状态是与组件一起创建的

React.Context 缺点:

  • 将 Redux 状态和上下文状态结合起来很复杂
  • 两种类型的存储,意味着需要维护的代码更多(React.Context 的功能更少)

你怎么看,正如我解释的那样,将 Redux 与 React.Context 一起使用是可以的,它解决了问题还是产生了更多问题?

对不起,我的英语不好。

【问题讨论】:

  • 当您谈到本地状态时,不确定您为什么不只使用钩子。你需要上下文吗?
  • @O.o 因为一个页面可能有多个组件,所以我需要上下文来将状态传递给页面子组件。

标签: javascript reactjs redux react-redux react-context


【解决方案1】:

尝试管理两个状态管理容器可能会变得笨拙,并且出于一致性考虑也不理想。我个人喜欢 React Hooks + Context,因为我觉得它简单而干净。您应该能够单独获得相同的结果,但是如果您已经使用 Redux 设置了通知系统,则需要考虑另一件事。此外,当用户使用 componentWillUnmount 生命周期方法离开页面时,您仍然可以使用 Redux 并清除 Redux 存储。阅读它们,那里有很多有用的文档,以及内容丰富的比较文章——看看你最喜欢哪一个,并认为最适合你的具体情况。

文档

文章

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    相关资源
    最近更新 更多