redux 中的 action、reducer 和 store 有啥区别?
Posted
技术标签:
【中文标题】redux 中的 action、reducer 和 store 有啥区别?【英文标题】: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/… 我看到你已经赏金了。当前的答案有什么特别缺乏的吗? 【参考方案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 中的图表。
【讨论】:
以上是关于redux 中的 action、reducer 和 store 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
[Redux/Mobx] 推荐在reducer中触发Action吗?为什么?
为啥我们在 Flux/Redux 架构中解耦 action 和 reducer?