hooks会推翻redux吗?
Posted
技术标签:
【中文标题】hooks会推翻redux吗?【英文标题】:Will hooks overthrown redux? 【发布时间】:2019-09-01 09:27:24 【问题描述】:我现在一直在寻找有关 React 的 hooks 的信息,一个问题一直在我的脑海中挥之不去。 这是一个相当古老的讨论,所以首先有一点背景:
State Management with React Hooks — No Redux or Context API What do Hooks mean for popular APIs like Redux connect() and React Router? redux-react-hook很多人(包括 React 的团队)认为 redux 和类似的东西只会适应新的 API,从而使 HOC 的方法过时,但我的问题是: 有了自定义钩子use reducer,以及经过深思熟虑的逻辑,为什么我还需要 Redux?我的意思是,将您的操作分配给单个减速器不仅更具性能吗?我找到了很多关于它的资料,但似乎都没有一个明确的答案(可能是因为没有一个?),所以我想知道您对 Redux 的未来有何看法?
【问题讨论】:
【参考方案1】:这个时候真的很难说。 redux 团队正在积极更新产品以包含一些不错的功能。然而,redux 的一位创建者 (https://github.com/acdlite) 似乎正在销毁他的旧应用程序,转而支持 react 中的新功能。
话虽如此,Redux 是一个经过测试且广为人知的库,很多人都对它感到满意。我不认为今天、明天或一年后用 redux 开始一个新项目是一个坏主意。科技不会在一夜之间消亡。如果它有一个目的,它就会继续存在。
然而,我确实认为 context 和 hooks 是 redux 的一个很好的替代品,但是社区还不知道如何使用它。
【讨论】:
【参考方案2】:不,绝对不是。
我在Reactathon 2019 talk on "The State of Redux" 中解决了这个问题。
总结:钩子主要提供了一些方法来做你已经可以做的事情,比如本地组件状态和避免通过上下文进行 prop-drilling。如果这就是您使用 Redux 的全部目的,那么您可能一开始就不需要 Redux。但是,钩子有其局限性,选择 Redux 还有很多其他用例。
另外,请注意我们是currently working on designing a public useRedux()
-type hooks API for React-Redux。
【讨论】:
useReducer()
本身并不集中。这只是在(函数)组件中拥有状态的另一种方式。如果您愿意,您已经可以使用this.state
将所有应用程序的状态放入您的根<App>
,因此与useReducer()
没有什么不同
Re Redux 的未来:不要忘记 Redux 不仅仅与 React 一起使用 - 它是一个框架/库不可知的状态容器。因此,即使 React 开发人员停止使用 Redux,其他开发人员(Angular/Vue 等)仍然可以在他们的项目中使用。
我认为随着越来越多的人学习如何将 useReducer 与 useContext 等结合起来,这个答案的相关性越来越低。似乎不可避免地 Redux 也变得越来越不相关。
一点也不! Redux 仍然被广泛使用——我估计它被大约 50% 的 React 应用程序使用。此外,虽然useReducer
+ useContext
是一个不错的组合,但它有很多限制,并且解决了与 Redux 不同的一组用例。有关详细信息,请参阅我的帖子 Redux - Not Dead Yet!。此外,our official Redux Toolkit package 让 Redux 的使用变得前所未有的轻松。【参考方案3】:
自发布此问题以来已过去一年多。
我想补充一点,我认为 Redux 已经失去了一些相关性...
在我看来,有 2 名玩家抢走了 Redux 在 React 市场的很大份额:
人们已经学会了如何将 useReducer 与 useContext 结合起来 实施更简单的解决方案,无需第三方 依赖关系。拥有 React 团队支持的优势; 这意味着我们将得到紧密集成的持续改进 使用 React 框架。
MobX 的用户群一直在增长。主要是因为它提供了一个观察者模式,它需要的样板代码比 Redux 少得多。 (这可以讨论)。
因此,尽管 Redux 仍然广泛用于 React 项目,但我预计这将逐渐减少超时...... - 没有双关语......很可能一点点;) -
专门用于绿地开发!
【讨论】:
以上是关于hooks会推翻redux吗?的主要内容,如果未能解决你的问题,请参考以下文章
基于 React Hooks 的应用程序真的需要 Redux Thunk 中间件吗?