【问题标题】:What is a difference between action,reducer and store in redux?redux 中的 action、reducer 和 store 有什么区别?
【发布时间】:2019-06-20 11:19:15
【问题描述】:

我是 react/redux 的新手。我试图弄清楚 redux 中的所有部分是如何交互的。给我带来麻烦的一件事是理解 action 和 reducers,store 之间的关系。

【问题讨论】:

  • 我建议你阅读这篇文章medium.freecodecamp.org/…
  • 我看到你已经赏金了。当前的答案有什么特别缺乏的吗?

标签: react-native redux react-redux redux-thunk redux-actions


【解决方案1】:

商店 一个保存应用程序状态数据的对象

减速器 返回一些状态数据的函数。由动作type触发

动作 一个告诉reducer如何改变状态的对象。它必须包含 type 属性。它可以选择包含payload 属性

【讨论】:

  • 我想添加到“action”,它包含的type 属性被reducer 用来确定您在reducer 内采取的操作类型。最常见的模式是在 reducer 中接受 action 作为参数,并在 action.type 上使用 switch 语句来确定你想对 store 做什么(全局状态)
【解决方案2】:

想想就很简单:

  • Store - 保存您的应用程序使用的所有数据。
  • Reducer - 是在接收到操作时操纵该数据。
  • Action - 告诉reducer 操作存储数据,它带有名称和(不是必需的)一些数据。

Reducer 通常采用 switch 语句的格式,在所有可能的 Actions(案例)之间切换,然后操作 Store 数据基于行动。当 redux 中的 reducer 数据发生变化时,组件中的属性会发生变化,然后会发生重新渲染。

【讨论】:

    【解决方案3】:
    • Store -> 全球化状态
    • Action -> 你想做什么,例如:事件点击
    • Reducer -> 描述您的操作如何将状态转移到下一个状态。 它会检查发生了哪些操作,并根据更新商店的操作。
    • Dispatch -> 我们执行操作的方式。 eg:将动作分发给reducer。然后 reducer 会检查要做什么,并且 store 会更新。

    【讨论】:

      【解决方案4】:

      想象一下您希望基于类的组件彼此共享数据的情况。他们甚至可能给数据带来变化。一个人可以以道具的形式向其他人提供数据。但是很难跟踪道具的名称和数据的结构。

      商店实际上简化了这些东西。您以这样一种方式设置应用程序架构,即组件将从所谓的 Store 供应中获取其数据。实际上,该机制非常智能,因为组件都是耳朵,所以当数据发生变化时组件会重新渲染自己。

      Actions只不过是从应用程序到商店的数据载体。

      而且很难清楚地表达 reducer 的概念。你可以想象一个真正的商店,里面放着不同的东西以备将来使用。当东西随意放置时,商店就没有用了。一个人可能会在里面呆上几个小时,但可能找不到任何东西。 Reducers 简单来说管理由操作提供的数据在存储中的保存方式。

      【讨论】:

        【解决方案5】:

        actions、reducers 和 stores 是 redux 的三个组成部分。

        Actions:Actions 是商店的唯一信息来源。动作有一个类型字段,它告诉执行什么样的动作,所有其他字段都包含信息或数据。还有另一个术语叫做动作创建者,这些是创建动作的函数。所以动作是信息(对象),动作创建者是返回这些动作的函数。

        Reducers:我们已经知道,action 只告诉你做什么,但不告诉怎么做,所以 reducer 是一个纯函数,它获取当前状态和 action,然后返回新状态并告诉商店怎么做。

        Store:Store是保存应用程序状态的对象。

        我发现此链接特别有用 - https://www.geeksforgeeks.org/introduction-to-redux-action-reducers-and-store/

        【讨论】:

          【解决方案6】:

          根据redux documents

          • store:应用的整个全局状态存储在一个名为 store 的对象中。
          • dispatcher:要更改状态中的某些内容,您需要调度一个动作。 (这就是调度员所做的)
          • action: action 是一个普通的 JavaScript 对象,描述了要对 store 进行的更改类型(由 action.type 指定)以及该更改所需的相关负载.
          • reducer:为了将状态和动作联系在一起,我们编写了一个函数 称为减速机。它只是一个(纯)函数,将状态和动作作为参数并返回应用的下一个状态。

          要更深入地了解,请查看this link 中的图表。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-01-16
            • 2018-01-13
            • 1970-01-01
            • 2019-05-16
            • 2021-03-07
            • 2010-10-20
            • 1970-01-01
            • 2018-10-21
            相关资源
            最近更新 更多