Redux 初学者必须知道的核心概念

简介

Redux 是一个用于 JavaScript 应用程序的可预测状态容器。它被广泛使用,尤其是在 React 应用程序中,以帮助开发人员更好地管理应用程序的状态。Redux 是一个强大的工具,但对初学者来说可能会感到有些困难。本文旨在探讨 Redux 的核心概念,以帮助初学者快速掌握 Redux 的使用以及如何将其应用到自己的应用程序中。

Redux 的核心概念

Redux 的核心概念包括:

Store

Store 是应用程序的状态仓库。它包含了应用程序的状态,并提供一个用于更新状态的接口。要创建一个 Store,需要调用 Redux 的 createStore() 函数并将 Reducer 作为参数。例如:

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

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

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

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

在这个例子中,我们创建了一个 Store,并将 Reducer 传递给 createStore() 函数。我们还为 Store 提供了一个初始状态,这个状态只包含一个名为 count 的属性,它的值为 0。

Reducer

Reducer 是一个纯函数,它接收当前状态和一个 action 对象,并返回一个新的状态。Reducer 没有副作用,也不会改变原来的状态,而是返回一个全新的状态。

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

在上述代码中,我们定义了一个 Reducer 函数,它接收一个名为 state 的参数,并返回一个全新的 state。这个 Reducer 只有两个 action:INCREMENT 和 DECREMENT。当接收到 INCREMENT action 时,它会将 count 加一;当接收到 DECREMENT action 时,它会将 count 减一;对于其他 action,它将返回原来的 state。

Action

Action 是一个包含 type 属性的对象,用于描述发生了什么。当用户执行某个操作时,可以创建一个 Action 对象,并将其分派到 Store 中。Redux 的 Action 是一个纯 JavaScript 对象,其中 type 属性是必须的。例如:

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

Dispatcher

Dispatcher 是一个函数,它接收一个 Action 对象,并将该 Action 对象分派到 Store 中。在 Redux 中,更常见的是使用 Action Creator 来创建 Action 对象。Action Creator 是一个返回 Action 对象的函数。例如:

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

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

在这个例子中,我们定义了两个 Action Creator:increment 和 decrement。这些函数返回的对象会被传递到 Dispatcher 中,最终会被分派到 Store 中。

Subscriber

Subscriber 是一个函数,它可以监听 Store 中状态的变化,并在状态变化时触发相应的操作。要监听 Store 中状态的变化,我们可以使用 Store 对象提供的 subscribe() 方法。例如:

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

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

在这个例子中,我们定义了一个函数 handleStoreChange,该函数将在 Store 中状态发生变化时被调用。我们将这个函数注册到 Store 中,以使它能够监听 Store 中状态的变化。

Redux 的使用

在了解完 Redux 的核心概念后,我们要将这些概念用于实际的应用程序中。以下是一个简单的应用程序,它使用 Redux 来管理计数器的状态:

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

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

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

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

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

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

在这个例子中,我们使用了 Redux 提供的一些工具,包括 useSelector、useDispatch 以及我们自己定义的 increment 和 decrement Action Creator。

使用 useSelector

useSelector 是一个 React Hooks,它用于选择 Store 中的状态。在上述代码中,我们使用了 useSelector 来选择 Store 中的 count 状态。useSelector 接收一个函数作为参数,该函数应该返回要选择的状态。

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

在这个例子中,我们传递了一个函数,该函数从 Store 中选择了 count 状态。

使用 useDispatch

useDispatch 是一个 React Hooks,它用于分派 Action 对象。在上述代码中,我们使用了 useDispatch 来分派 increment 和 decrement Action。

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

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

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

在这个例子中,我们首先调用 useDispatch,以获取一个 dispatch 函数。然后我们定义了两个函数来分派 Action,这些 Action 是通过 increment 和 decrement Action Creator 创建的。

创建 Action Creator

我们创建了两个 Action Creator 函数 :increment 和 decrement。这些函数分别创建一个 type 为 INCREMENT 或 DECREMENT 的 Action 对象。

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

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

结论

Redux 是一个非常强大的状态管理工具。在本文中,我们探讨了 Redux 的核心概念,并介绍了如何将 Redux 应用于实际的应用程序中。这些概念包括 Store、Reducer、Action、Dispatcher 以及 Subscriber。我们还通过一个简单的应用程序示例展示了 Redux 的使用。希望这篇文章能够帮助读者更好地理解 Redux。

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