Redux和Redux Toolkit之间的主要区别是什么?在Redux Toolkit中是否需要使用Saga?

46

我的问题是我应该使用哪个?Redux Toolkit可以替代Redux核心吗?


4
工具包 Toolkit 本质上就是 Redux,它只是一种使用它的偏好方式。它使用这个库。 - zero298
顺便提一下,还有很多其他优秀的状态管理库(例如 effectorrecoil)可供选择。 - jsejcksn
是的,我只知道Recoil和MobX。 - LXT
2个回答

93

Redux曾经非常好用,但如果你还没有尝试过,我强烈推荐使用Redux-Toolkit。唯一的情况是,当你使用基于类的组件时,可能需要坚持使用Redux,因为Redux Toolkit会有些样板代码(就像Redux),而且你可能会错过很好的支持。

然而,对于函数式组件,Redux Toolkit就像是加强版的Redux。

使用Redux toolkit的原因:

  1. 相比Redux,所需的样板代码要少得多。

  2. Redux钩子如useSelectoruseDispatch让事情变得更简单和易于使用。[这不特定于Redux toolkit,但在此突出显示它,因为在函数式组件中使用这些钩子非常有帮助,并可能对完全新手的redux有所帮助]

  3. 你不需要手动设置thunk,因为redux-toolkit自带一个createAsyncThunk,可以方便地执行异步操作。

  4. getState也非常有用,在任何操作或异步操作中获取状态变量。

  5. 可变性可能被认为是优点或缺点,但如果你不太习惯使用展开运算符编写代码,你可能也会喜欢这个特性。直接赋值让redux toolkit在后台处理可变性。

  • current可以用于在任何地方记录您的状态,以便在调试和理解出现问题的位置时使用。(当然,Redux调试工具也很不错)

  • 预构建的模板:您可能希望使用npx create-react-app my-app --template redux-typescript,或者如果您正在与next一起使用:yarn create next-app --example with-redux with-redux-app。它为您提供了一个设置好的redux toolkit样板,并包含大多数重要的Redux状态管理应用程序的样板,因此您可以轻松参考它们创建自己的slices。

  • 我一直在使用很多Redux,最初有点困惑,但是一旦掌握了Redux toolkit并且使用了很多函数组件,您可能永远不会再回到Redux了。


    9
    基于第二个原因,useSelector和useDispatch也可在没有工具包的情况下使用。 - Hyetigran
    13
    更正一点:Redux Toolkit与useSelectoruseDispatchconnect无关。在React方面,使用Redux或Redux Toolkit没有任何区别。这是你必须在两种情况下都使用的分离的react-redux包。两者之间的区别在于非React相关代码的数量和安全性。 - phry
    感谢@phry和hyetigran的纠正。我的唯一目的只是为了强调它,因为提问者对redux还很陌生,所以想要强调一下。 - Shivam Sahil

    18

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接