Redux 和 Context API 的区别和使用场景

阅读时长 7 分钟读完

引言

在前端开发中,传递数据是非常重要的,而 React 是一个高性能 UI 框架,在它的生态系统中 Redux 和 Context API 都是比较流行的状态管理工具,但是不同场景下它们的使用方法和效果也不同。本文将介绍 Redux 和 Context API 的区别和使用场景,以及相应示例代码。

Redux

Redux 是一个 JavaScript 应用状态容器,它可以存储整个应用状态,避免了状态分散在多个组件之间。Redux 的核心只有三个部分:store、action 和 reducer。

Store 用于存储整个应用的状态,在一个状态树上存储所有数据。Store 的数据只能通过 action 修改,而 reducer 是用于处理 action 返回新的状态。Store 通常使用 createStore 方法创建,例子如下:

现在我们来通过一个简单的 todo 应用举例子。

  • 我们可以先创建一个 actionTypes.js 文件用于存放所有 action 的 type。
  • 创建 action creator,代码如下:
-- -------------------- ---- -------
------ - --------- ----------- - ---- ----------------

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

------ ----- ---------- - ---- -- --
  ----- ------------
  ---
---
  • 然后,创建 reducer,代码如下:
-- -------------------- ---- -------
------ - --------- ----------- - ---- -----------------

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

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

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

    --------
      ------ ------
  -
-
  • 最后创建 store。

现在,store 已经创建好了,可以在组件中使用 connect 方法将其连接,这样就可以在组件中使用 store 中存储的状态了。当状态需要被更新时,我们只需要分发 action 就可以了。代码如下:

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

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

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

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

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

Context API

Context API 是 React 官方发布的新 API,用于解决组件之间的数据传递问题。它通过创建一个全局共享的数据传递通道,可以在组件树中直接共享一些需要共享的状态。Context 和 Redux 的区别在于,Context 是使用数据组件树的方式来创建共享状态,而 Redux 则使用单一存储器来容纳整个应用。当应用的数据流特别简单时,可以使用 Context 来实现状态管理。代码如下:

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

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

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

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

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

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

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

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

总结

以上是 Redux 和 Context API 的使用方法和场景。当你的应用状态需要跨许多组件时,应该使用 Redux;而当应用的数据流比较简单时,可以使用 Context API。当然,使用 Redux 和 Context API 都是一个最佳实践,可以在不同场景中相互搭配和使用。

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

纠错
反馈