理解 Redux 中的 Actions、Reducers 和 Store

Redux 是一个非常流行的 JavaScript 状态管理库,它可以帮助我们更好地管理应用程序的状态。在 Redux 中,有三个核心概念:Actions、Reducers 和 Store。本文将详细介绍这三个概念,帮助你更好地理解 Redux 并在实际开发中使用它。

Actions

Action 是一个对象,用于描述发生了什么事情。它包含一个 type 属性和一些其他属性,这些属性可以用于描述发生的事件。例如,我们可以创建一个 ADD_TODO 的 Action,来描述当用户添加一个新的待办事项时发生的事件。

----- -------- - -----------

----- ------------- - -
  ----- ---------
  ----- ------ -------
  ---------- -----
--

在这个例子中,ADD_TODO 是一个字符串常量,用于描述 Action 的类型。addTodoAction 是一个 Action 对象,它包含了 type 属性和其他属性,用于描述添加待办事项的事件。

Reducers

Reducer 是一个函数,用于处理 Action 并更新应用程序的状态。它接收两个参数:当前状态和一个 Action 对象。Reducer 根据 Action 的类型来决定如何更新状态,并返回一个新的状态对象。

例如,我们可以创建一个 Reducer 来处理 ADD_TODO Action,并在状态中添加一个新的待办事项。

----- ------------ - -
  ------ --
--

-------- ----------------- - ------------- ------- -
  ------ ------------- -
    ---- ---------
      ------ -
        ---------
        ------ -
          ---------------
          -
            ----- ------------
            ---------- ----------------
          -
        -
      --
    --------
      ------ ------
  -
-

在这个例子中,initialState 是一个包含 todos 属性的对象,用于描述应用程序的初始状态。todoReducer 是一个处理 ADD_TODO Action 的 Reducer 函数。当接收到 ADD_TODO Action 时,它会创建一个新的状态对象,其中包含了一个新的待办事项。如果接收到其他类型的 Action,则返回当前状态对象。

Store

Store 是一个包含状态和 Reducer 的对象。它是 Redux 应用程序的中心,用于管理应用程序的状态。Store 提供了一些方法,用于更新状态、订阅状态的变化以及取消订阅。

例如,我们可以创建一个 Store 来管理待办事项的状态并使用 todoReducer 处理所有的 Action。

------ - ----------- - ---- --------

----- ----- - -------------------------

在这个例子中,createStore 是一个 Redux 提供的函数,用于创建一个新的 Store 对象。我们将 todoReducer 作为参数传递给 createStore 函数,用于处理所有的 Action。现在,我们可以使用 Store 的一些方法来更新状态、订阅状态的变化以及取消订阅。

-- ----
----------------
  ----- ---------
  ----- ------ -------
  ---------- -----
---

-- -------
------------------ -- -
  ------------------------------
---

-- ----
----- ----------- - ------------------ -- -
  ------------------------------
---

--------------

在这个例子中,我们使用 store.dispatch 方法来更新状态,将一个新的 ADD_TODO Action 发送到 Store 中。我们还使用 store.subscribe 方法来订阅状态的变化,并在状态变化时打印状态对象。最后,我们使用 unsubscribe 函数取消订阅。

总结

在 Redux 中,Actions、Reducers 和 Store 是三个核心概念。Actions 用于描述发生了什么事情,Reducers 用于处理 Action 并更新状态,Store 是管理状态的中心。理解这三个概念并合理使用它们,可以帮助我们更好地管理应用程序的状态并提高开发效率。

示例代码:https://codesandbox.io/s/redux-example-9c2v1

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66182c74d10417a22284b070