ReactJS Redux状态(全局状态)+ React.Context(本地状态)

时间:2020-04-23 10:14:46

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

我是ReactJS World的新手,我需要您对ReactJS状态的看法。

我开始在我的应用程序中将Redux用于全局状态(全局模块),因为它在我需要状态时可以随时随地调用,因此非常适合。 在Redux中,我喜欢保留通知,它们显示在我的应用程序的所有页面上,也保留了应用程序版本(演示/实时),换句话说,我尝试保留Redux(全局状态)全局值。

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

React.Context优点:

  • 当客户端离开页面时,状态会自动删除
  • 客户端访问页面时,状态是干净的,因为状态是由组件创建的。

React.Context缺点:

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

您如何认为,如我所解释的,可以将Redux togheter与React.Context一起使用,它可以解决问题,还是会产生更多问题?

对不起,我的英语不好。

1 个答案:

答案 0 :(得分:-2)

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

文档

文章