对 React-Redux 的简单理解及应用

阅读时长 8 分钟读完

React-Redux 是一个非常流行的前端技术框架,尤其适用于处理大型、复杂的应用程序。在本文中,我们将简要介绍 React-Redux 的基础知识和应用,并提供一些示例代码,帮助读者更好地理解。

React-Redux 简介

React-Redux 是一个基于 React.js 库的状态管理库,它可以将 React.js 应用程序中的状态和操作分离出来,使得代码更加模块化和可维护。

React-Redux 的核心思想是把应用程序的状态存储在一个单一的存储库中,这个存储库叫做 “Store”。Store 内部的状态可以被应用程序中的任意组件访问和修改,这样就减轻了组件间通信的负担,简化了程序的设计和维护。

React-Redux 还包含了一些重要的概念,例如:

  • Action:用于描述事件的对象。Action 中包含了事件的类型和相关的数据,它们会被传递给 Store,以便 Store 能够更新内部状态。

  • Reducer:一个纯函数,用于根据 Action 更新 Store 中的状态。它接收两个参数:当前的状态和 Action 的数据。

  • Provider:一个 React 组件,用于将 Store 中的状态传递给 React 应用程序中的所有组件。

  • Connect:一个函数,用于将组件与 Store 中的状态和操作连接起来。它接收两个参数: mapStateToProps 和 mapDispatchToProps。

React-Redux 应用

现在,我们来看一个简单的 React-Redux 应用程序。假设我们有一个需要管理 TODO 列表的应用程序,我们希望这个应用程序能够允许用户添加新的任务,并且在任务完成后将其标记为已完成。

首先,我们需要创建一个 Store。在这个示例中,我们将创建一个包含两个任务的 TODO 列表。

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

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

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

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

在上面的代码中,我们使用 createStore 方法来创建 Store,并在 todoReducer 中处理 Action,以便 Store 可以根据 Action 更新内部状态。注意,我们还为 Store 提供了一个初始状态 initialState

现在,我们将使用 Provider 组件将 Store 传递给 React 应用程序中的所有组件:

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

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

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

在上面的代码中,我们将 Store 作为 store 属性传递给 Provider,并将 Provider 嵌套在 React 应用程序中的根组件中。这样,React 应用程序中的每个组件都可以通过 connect 函数连接到这个 Store 中。

接下来,我们将使用 Connect 函数来连接一个 React 组件到 Store。在这个示例中,我们将连接一个组件,用于显示 TODO 列表中的任务。它将使用 mapStateToProps 函数将 Store 中的状态映射到组件的属性中,以便组件可以读取 Store 中的状态:

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

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

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

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

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

在上面的代码中,我们使用 mapStateToProps 函数将 Store 中的 todos 数组映射到 props 属性中,并使用 mapDispatchToProps 函数将 toggleTodo 函数映射到组件的 props 属性中,以便组件可以更新 Store 中的状态。

最后,我们将使用另外一个组件来添加新的任务到 Store 中。这个组件将使用 connect 函数来连接到 Store 中,并使用 mapDispatchToProps 函数将 addTodo 函数映射到组件的 props 属性中:

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

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

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

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

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

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

在上面的代码中,我们使用 useState hook 来追踪用户输入,创建一个 handleSubmit 函数,在用户提交表单时添加新的任务,并将状态重置为空白。

现在,我们已经连接了 React 应用程序的三个组件到我们的 Store 中,可以开始运行我们的应用程序了。

结论

React-Redux 是一个非常流行和强大的前端技术框架,它可以帮助我们有效地管理和维护大型、复杂的应用程序。在本文中,我们已经学习了 React-Redux 的基础知识和应用,并提供了一些示例代码,希望能够帮助读者更好地掌握这项技术。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6773e08a6d66e0f9aae88ee1

纠错
反馈