redux,react-redux,redux-thunk之间有什么区别?

时间:2016-07-15 22:00:41

标签: javascript reactjs redux reactjs-flux react-redux

我正在使用React + Flux。我们的团队正计划从通量转向redux。 Redux对于我来自flux world来说非常困惑。 光通量控制流程简单来自组件 - >行动 - >存储和存储更新组件。它简单明了。

但在redux中令人困惑。这里没有商店,是的,有些例子没有使用商店。我经历了几个教程,似乎每个人都有自己的实现风格。有些人正在使用容器,有些则没有。 (我不知道这个容器概念,也无法理解mapStatePtoProps所做的mapStateToProps)。

  1. 有人可以清楚地解释如何在redux中控制流程吗?
  2. redux中组件/容器/操作/操作创建者/存储的角色是什么?
  3. redux / react-redux / redux-thunk / any others之间的区别?
  4. 如果您可以发布指向任何简单且精确的 redux教程的链接,将会非常有帮助。

4 个答案:

答案 0 :(得分:58)

  
      
  1. 有人可以清楚地解释如何在redux中控制流程吗? Redux(总是)有一家商店。
  2.   
  1. 每当要替换商店中的状态时,都会分派操作。

  2. 该动作由一个或多个减速器捕获。

  3. reducer / s创建一个新状态,它结合了旧状态和分派的动作。

  4. 商店订阅者会收到有关新状态的通知。

  5.   
        
    1. redux中组件/容器/操作/操作创建者/存储的角色是什么?
    2.   
    • 存储 - 保持状态,当新操作到达时运行调度 - >中间件 - > reducer管道,并在状态被新的状态替换时通知订户。

    • 组件 - 直接无法识别状态的哑视图部件。也称为表达组件。

    • 容器 - 使用react-redux了解状态的视图片段。也称为智能组件和更高阶组件

    请注意,容器/智能组件与哑组件只是构建应用程序的好方法。

    • 动作 - 与flux相同 - 具有类型和有效负载的命令模式。

    • 行动创作者 - 创造行动的干嘛方式(非必要)

      
        
    1. redux / react-redux / redux-thunk / any others之间的区别?
    2.   
    • redux - 像单个商店一样的流动,可以用在你喜欢的任何环境中,包括香草js,反应,角1/2等......

    • react-redux - redux和react之间的绑定,创建监听商店状态变化的容器(智能组件),为演示(哑)组件准备道具并重新渲染。

    • redux-thunk - 允许您编写返回函数而不是动作的动作创建者的中间件。 thunk可用于延迟动作的发送,或仅在满足某个条件时发送。主要用于对api的异步调用,即在成功/失败时调度另一个操作。

      
        
    1. 如果您可以发布任何简单的链接,那将非常有帮助   精确的redux教程。
    2.   

答案 1 :(得分:12)

回答标题问题:

  

redux,react-redux,redux-thunk之间有什么区别?

  1. redux:主库(独立于React)
  2. redux-thunk:一个redux中间件 帮助您完成异步操作
  3. react-redux:将您的redux商店与ReactComponents连接

答案 2 :(得分:2)

  • redux:用于管理应用程序状态的库。
  • react-redux:用于管理 React 应用程序状态的库。
  • redux-thunk:用于记录日志,崩溃报告,与asyn API对话,路由等的中间件...

答案 3 :(得分:0)

下面的图像演示了redux中的数据流: how the data flows through Redux? Redux的优点如下:

结果的可预测性 –由于始终有一个真实来源,即商店,因此,对于如何将当前状态与操作以及应用程序的其他部分进行同步,没有任何困惑。 可维护性 –该代码变得易于维护,具有可预测的结果和严格的结构。 服务器端渲染 –您只需要将在服务器上创建的存储传递给客户端。这对于初始渲染非常有用,并在优化应用程序性能时提供了更好的用户体验。 开发人员工具 –从操作到状态更改,开发人员都可以实时跟踪应用程序中正在进行的所有操作。 社区和生态系统 – Redux背后有一个庞大的社区,这使其使用更加引人入胜。大量的才华横溢的社区为图书馆的发展做出了贡献,并开发了各种应用程序。 易于测试 – Redux的代码主要是小的,纯净的,孤立的功能。这使代码可测试且独立。 [组织] [2] – Redux精确地说明了代码的组织方式,这使得团队工作时代码更加一致和容易。