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

阅读时长 8 分钟读完

简介

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

纠错
反馈