在 React 中使用全局状态管理的最佳实践

阅读时长 9 分钟读完

React 是一种流行的 JavaScript 库,用于构建大型单页应用程序。在这些应用程序中,状态管理变得越来越复杂,因此需要一种全局状态管理的解决方案。本文将介绍一些在 React 中使用全局状态管理的最佳实践,包括使用 Redux 和 MobX。

Redux

Redux 是一个流行的状态管理库,它提供了一个单一的状态存储,称为“store”。Redux 的核心概念是“actions”、“reducers”和“store”。Actions 描述了发生了什么,reducers 根据 action 更新状态,而 store 是状态的单一来源。

安装和配置

要在 React 中使用 Redux,首先需要安装它。可以使用 NPM 或 Yarn 进行安装:

安装完成后,需要配置 Redux。首先,需要创建一个 reducers.js 文件,该文件包含所有 reducer 函数。然后,需要创建一个 store.js 文件,该文件导入 reducers 和 Redux 的 createStore 函数,并使用它来创建一个新的 store。

reducers.js:

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

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

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

store.js:

在组件中使用 Redux

要在组件中使用 Redux,需要将它们连接到 store。可以使用 React Redux 库来完成这一点。React Redux 提供了两个主要的组件:Provider 和 connect。

Provider 组件接收一个 store 属性,并使其可用于所有后代组件。connect 函数用于连接组件到 store,并将 store 中的状态作为组件的 props 传递。

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

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

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

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

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

在这个例子中,Counter 组件连接到 store,并使用 mapStateToProps 函数将 count 状态作为组件的 props 传递。mapDispatchToProps 函数将 increment 和 decrement 操作作为 props 传递。

异步操作

在现代的单页应用程序中,异步操作变得越来越常见。Redux 提供了一个叫做“thunk”的中间件,用于处理异步操作。Thunk 允许 action 创建函数返回一个函数而不是一个对象,从而使它们能够处理异步操作。

要使用 thunk,需要安装 redux-thunk 中间件:

然后,在创建 store 时将它添加到 applyMiddleware 函数中:

现在,可以编写 action 创建函数来处理异步操作。例如,以下代码使用 fetch API 从 API 加载数据:

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

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

Redux 的优点

Redux 提供了一个单一的状态存储,使得状态管理变得更加容易。它也是可预测的,因为状态的变化只能通过 actions 而发生。Redux 还提供了一个方便的调试工具,可以帮助开发人员更轻松地调试应用程序。

MobX

MobX 是另一个流行的状态管理库,它提供了一种更简单的方式来管理状态。在 MobX 中,状态是可观察的,意味着当状态发生变化时,与之相关的组件将自动更新。

安装和配置

要在 React 中使用 MobX,需要安装它。可以使用 NPM 或 Yarn 进行安装:

安装完成后,需要配置 MobX。首先,需要创建一个 store.js 文件,该文件包含所有状态和操作。然后,需要使用 MobX 的 Provider 组件将其提供给所有后代组件。

store.js:

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

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

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

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

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

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

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

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

异步操作

在 MobX 中处理异步操作非常简单。由于状态是可观察的,因此只需在异步操作完成后更新状态即可。

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

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

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

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

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

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

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

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

MobX 的优点

MobX 提供了一种更简单的方式来管理状态。它是可观察的,因此当状态发生变化时,与之相关的组件将自动更新。MobX 还提供了一个方便的调试工具,可以帮助开发人员更轻松地调试应用程序。

结论

在 React 中使用全局状态管理是构建大型单页应用程序的关键。Redux 和 MobX 都提供了一种优秀的解决方案。Redux 提供了一个单一的状态存储,使得状态管理变得更加容易,而 MobX 提供了一种更简单的方式来管理状态。无论选择哪种方案,都需要仔细考虑应用程序的需求,并遵循最佳实践。

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

纠错
反馈