Redux 简单教程:如何用 Redux 管理 Server Side API 交互和页面状态

阅读时长 13 分钟读完

在前端开发中,我们经常需要与后端的 API 进行交互,获取数据并展示在页面上。同时,页面上的状态也需要进行管理,例如用户的登录状态、页面的加载状态等等。Redux 是一个非常好用的状态管理工具,可以帮助我们轻松地管理页面状态和 API 交互。

本文将介绍如何使用 Redux 来管理 Server Side API 交互和页面状态,并提供示例代码和深入的学习和指导意义。

什么是 Redux?

Redux 是一个 JavaScript 状态容器,提供可预测化的状态管理。它可以帮助我们轻松地管理页面状态和 API 交互。Redux 的核心概念包括:store、action 和 reducer。

  • Store:存储应用程序的状态。
  • Action:描述发生了什么,是更新状态的唯一途径。
  • Reducer:根据当前状态和 action 来计算下一个状态。

Redux 的数据流如下图所示:

如何用 Redux 管理 Server Side API 交互?

在前端开发中,我们经常需要从后端获取数据并展示在页面上。这个过程可以使用 Redux 来管理。下面是一个简单的示例代码:

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

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

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

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

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

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

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

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

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

-- ------

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

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

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

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

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

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

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

在上面的代码中,我们定义了一个 fetchUsers 的 action,用来获取用户列表数据。在 reducer 中,根据不同的 action 类型,我们更新了 store 中的状态。在 App 组件中,我们使用 useSelector 来获取 store 中的状态,并使用 useEffect 来在组件挂载时触发 fetchUsers action。

如何用 Redux 管理页面状态?

除了管理 API 交互,我们还可以使用 Redux 来管理页面状态,例如用户的登录状态、页面的加载状态等等。下面是一个简单的示例代码:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-- --------

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

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

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

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

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

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

-- ------

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

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

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

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

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

在上面的代码中,我们定义了 loginlogout 两个 action,用来管理用户的登录状态。在 reducer 中,根据不同的 action 类型,我们更新了 store 中的状态。在 PrivateRoute 组件中,我们使用 useSelector 来获取 store 中的状态,并根据 isAuthenticated 的值来判断是否允许访问受保护的路由。在 Login 组件中,我们使用 useState 来管理表单数据,并使用 useSelectoruseDispatch 来获取 store 中的状态和派发 action。在 App 组件中,我们使用 useSelectoruseDispatch 来获取 store 中的状态和派发 action,并使用 PrivateRoute 组件来保护受保护的路由。

总结

Redux 是一个非常好用的状态管理工具,可以帮助我们轻松地管理页面状态和 API 交互。在本文中,我们介绍了如何使用 Redux 来管理 Server Side API 交互和页面状态,并提供了示例代码和深入的学习和指导意义。希望本文能够帮助你更好地理解 Redux,并在实际开发中使用它来提高开发效率。

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

纠错
反馈