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
只是用作react
和redux
之间的连接器。
您可以执行以下操作以获得最佳实践:
对于多商店管理,您可以联系redux
。
要连接react
和redux
,您可以选择react-redux
。
对于中间件,您可以选择redux-thunk
或redux-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) 仅更改状态对象中的特定键
从 REST API 填充上下文并在带有 useEffect 和 useContext 的 React 组件中使用它