【问题标题】:Will hooks overthrown redux?hooks会推翻redux吗?
【发布时间】:2019-09-01 09:27:24
【问题描述】:

我现在一直在寻找有关 React 的 hooks 的信息,一个问题一直在我的脑海中挥之不去。 hooks会推翻redux吗?这是一个相当古老的讨论,所以首先有一点背景:

很多人(包括 React 的团队)认为 redux 和类似的东西只会适应新的 API,从而使 HOC 的方法过时,但我的问题是:

有了自定义钩子use reducer,以及经过深思熟虑的逻辑,为什么我还需要 Redux?我的意思是,将您的操作分配给单个减速器不仅更具性能吗?我找到了很多关于它的资料,但似乎都没有一个明确的答案(可能是因为没有一个?),所以我想知道您对 Redux 的未来有何看法?

【问题讨论】:

    标签: javascript reactjs redux flux react-hooks


    【解决方案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 市场的很大份额:

      1. 人们已经学会了如何将 useReducer 与 useContext 结合起来 实施更简单的解决方案,无需第三方 依赖关系。拥有 React 团队支持的优势; 这意味着我们将得到紧密集成的持续改进 使用 React 框架。

      2. MobX 的用户群一直在增长。主要是因为它提供了一个观察者模式,它需要的样板代码比 Redux 少得多。 (这可以讨论)。

      因此,尽管 Redux 仍然广泛用于 React 项目,但我预计这将逐渐减少超时...... - 没有双关语......很可能一点点;) -

      专门用于绿地开发!

      【讨论】:

        猜你喜欢
        • 2019-11-08
        • 2019-09-24
        • 2019-07-18
        • 1970-01-01
        • 2020-01-25
        • 2021-08-11
        • 2020-05-09
        • 1970-01-01
        • 2017-11-19
        相关资源
        最近更新 更多