npm 包 redux-effects-fetchr 使用教程

阅读时长 8 分钟读完

介绍

redux-effects-fetchr 是一个用于同步 redux 应用程序和服务器数据的 npm 包。它使用 Fetchr 提供的服务端数据提供程序,提供了一个方便的方法来发出和处理 ajax 请求,并将响应数据存储在 redux store 中。

该 npm 包使用 redux-saga 和 redux-actions 作为前端框架,所以在使用之前需要先了解它们。

安装

使用 npm 安装 redux-effects-fetchr。

使用

首先,在应用程序的 redux store 中,需要启用该模块的 middleware。

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

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

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

然后,创建一个 fetchr 服务,用来处理应用程序的所有 ajax 请求。在 Fetchr 中,需要定义一组服务端调用,每个服务端调用都对应一个或多个端点,一个端点可以对应多个方法。在客户端中,通过服务端调用给出的端点和方法名来调用对应的服务器函数。

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

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

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

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

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

接下来,需要创建一个 redux action,用来发出 fetchr 请求。这个 action 包含了请求的方式、URL、参数和回调函数。在发起 ajax 请求后,fetchr 会将响应的数据存储在 redux store 内部的 response 对象中。

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

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

最后,在 redux saga 中,调用 fetchWeather action。这将触发 redux effects,发出 ajax 请求并将响应数据保存在 redux store 中。

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

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

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

示例代码

完整的使用示例代码如下:

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

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

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

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

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

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

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

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

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

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

结论

redux-effects-fetchr 是一个非常适合基于 redux 构建应用程序的 npm 包,它提供了一种简单而高效的方法来处理 ajax 请求,并将响应数据存储在 redux store 中。它非常易于安装和使用,并且通过将 redux-saga 和 redux-actions 结合使用,可以使我们更加方便地编写 redux 应用程序。

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

纠错
反馈