React Context vs React Redux,我应该在什么时候使用它们?[闭门]

关闭。这个问题是基于意见的。它目前不接受答案。

<hr class=“my12大纲无baw0 bb bc-POWER-400”/

想改进这个问题吗?编辑这篇文章,更新这个问题,以便用事实和引文来回答。

两年前关闭

改进这个问题

React 16.3.0已经发布,上下文API不再是一个实验性功能。丹·阿布拉莫夫(Redux的创建者)在这里写了一篇很好的评论,但上下文仍然是一个实验性功能已经两年了

我的问题是,根据您的意见/经验,我应该在什么时候使用反应上下文而不是反应重复,反之亦然

由于上下文不再是一种实验性功能,您可以直接在应用程序中使用上下文,它对于将数据传递给它设计的深层嵌套组件来说将是非常好的

正如马克·埃里克森在他的博客中所写:

如果您只是使用Redux来避免传递道具,那么上下文可能会
替换Redux-但是您可能在第一个阶段不需要Redux
地点

上下文也不会给您任何类似于Redux DevTools,即
能够跟踪您的状态更新,中间件添加集中式
应用程序逻辑和其他强大的功能,Redux
启用

Redux功能更强大,提供了大量上下文API没有提供的功能,正如@danAbramov提到的那样

React-Redux在内部使用上下文,但不会在内部公开这一事实
公共API。因此,通过React使用上下文应该更安全
Redux比直接Redux更重要,因为如果它发生变化,更新
代码将出现在React Redux上,而不是您

由Redux实际更新其实现以符合最新的上下文API

最新的上下文API可用于只需使用Redux在组件之间传递数据的应用程序,但是使用集中数据并使用Redux thunkRedux saga处理API请求的应用程序仍然需要Redux。除此之外,Redux还有其他库d类似于redux persist,它允许您在本地存储中保存/存储数据,并在刷新时重新水化,这是上下文API仍然不支持的

正如@dan_abramov在他的博客中提到的,您可能不需要Redux,Redux有一些有用的应用程序,如

  • 将状态持久化到本地存储,然后从该存储启动,开箱即用
  • 在服务器上预填充状态,以HTML格式将其发送到客户端,然后从中启动,开箱即用
  • 序列化用户操作并将其与状态快照一起附加到自动错误报告中,以便产品开发人员
    可以重播它们以重现错误
  • 通过网络传递操作对象以实现协作环境,而无需对代码编写方式进行重大更改
  • 维护撤销历史记录或实现乐观突变,而不需要对代码编写方式进行重大更改
  • 在开发中的状态历史记录之间切换,并在代码更改时从动作历史记录中重新评估&gt;当前状态,ala TDD
  • 为开发工具提供全面的检查和控制功能,以便产品开发人员可以为其应用程序构建自定义工具
  • 在重用大部分业务逻辑的同时提供替代UI

有了这么多应用程序,现在说Redux将被新的上下文API取代还为时过早

发表评论