React 上下文 API 和/或 React-Redux-Thunk

Posted

技术标签:

【中文标题】React 上下文 API 和/或 React-Redux-Thunk【英文标题】:React Context API and/or React-Redux-Thunk 【发布时间】:2020-08-15 01:20:44 【问题描述】:

我使用 Context API 进行多商店管理,使用 React-Redux 和 thunk 进行单个商店管理。

我应该坚持一个而不是另一个,还是应该使用 React-Redux 来管理 React 的 Context API 上的多个商店。

我与一位朋友交谈过,他为他的公司与我相反,我想知道为什么但从未得到解释。

最佳做法是什么?

【问题讨论】:

【参考方案1】:

React Context API 有点难以管理,你可以使用redux 来代替管理状态。 react-redux 只是用作reactredux 之间的连接器。

您可以执行以下操作以获得最佳实践:

对于多商店管理,您可以联系redux。 要连接reactredux,您可以选择react-redux。 对于中间件,您可以选择redux-thunkredux-saga

我更喜欢redux-saga,因为它比redux-thunk更有优势。

【讨论】:

【参考方案2】:

Redux 对于大型应用程序过去和现在都非常流行,在这些应用程序中,您需要能够维护单一的事实来源,但将商店的不同部分作为道具传递给各种组件。这个包的优点是它可以使调试更容易,并且如果实施正确,它非常健壮。

就 redux 中间件而言,它们通常用于异步集成。 Thunk 和 Saga 是两个流行的库。上下文应该能够在没有任何其他依赖项的情况下处理异步。

Context API 是作为 React 16.3 的一部分发布的新功能,可以更轻松地创建商店,但在我看来,它可能更难以扩展。我没有太多使用 Context API 的经验,但它已经变得非常流行,对于有经验的开发人员来说,redux 可以做任何事情。

我会说,当一种方法同样有效时,通常不鼓励同时使用这两种方法。话虽这么说,我管理的一个应用程序同时使用了这两者,因为当它第一次创建时 Context API 16.3 尚未发布,所以 redux 是整个应用程序的唯一状态管理器,但后来一些本地化组件状态被更新为拥有自己的上下文店铺。不过,我认为这不是最佳做法。

详细了解技术差异here。

【讨论】:

以上是关于React 上下文 API 和/或 React-Redux-Thunk的主要内容,如果未能解决你的问题,请参考以下文章

使用上下文 API (React.js) 仅更改状态对象中的特定键

react-router-dom 路由组件需要页面重新加载

React 状态管理:上下文 API 作为全局存储

从 REST API 填充上下文并在带有 useEffect 和 useContext 的 React 组件中使用它

React Native:在开玩笑的单元测试中更新上下文 api 值

React JS:在 API 调用成功后获取上下文数据