npm 包 @redux-saga/core 使用教程

阅读时长 4 分钟读完

介绍

@redux-saga/core 是一个用于处理 Redux 应用中异步操作的库,它提供了一种简单的方式来管理副作用。本文将会介绍如何使用 @redux-saga/core,让您了解如何在 Redux 应用中优雅地处理异步逻辑和副作用。

安装

要使用 @redux-saga/core,您需要先安装它。您可以通过以下命令来安装:

使用

@redux-saga/core 提供了一组 API,用于定义和管理 Sagas。在创建 Saga 时,您可以使用以下形式:

在上面的代码中,我们定义了一个 Saga,它会监听 "USER_FETCH_REQUESTED" 的 action,然后调用 fetchUser 方法。

Generator Functions

在 @redux-saga/core 中定义的 Saga 是以 Generator 函数的形式定义的。Generator 函数是一种特殊类型的函数,它通过使用 yield 关键字来控制流程。

例如,可以在 Saga 中使用以下代码来调用一个异步 API:

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

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

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

在上面的代码中,我们调用了 Api.fetchUser,如果它成功的话,会向 Store 发送一个 USER_FETCH_SUCCEEDED 的 action;如果失败的话,会发送一个 USER_FETCH_FAILED 的 action。

Effect

在 @redux-saga/core 中,可以使用 Effect 来管理副作用。Effect 是一个简单的 JavaScript 对象,它描述了应该在 Saga 中执行的操作。以下是 @redux-saga/core 中可用的 Effect 列表:

  • take
  • takeEvery
  • takeLatest
  • put
  • call
  • apply
  • cps
  • fork
  • spawn
  • join
  • cancel
  • select
  • actionChannel
  • flush
  • cancelled
  • retry

Effect 可以组成 Sagas,Sagas 是通过一个主循环执行的,这个循环以一种非阻塞的方式运行。例如,以下是一个简单的 Saga,它将取消之前启动的计时器并启动一个新的计时器。

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

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

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

在上面的代码中,我们定义了一个 Saga,它监听 START_TIMER 的 action,一旦收到该 action,就会启动一个计时器。

总结

在本文中,我们介绍了如何使用 @redux-saga/core 来管理 Redux 应用中的异步操作和副作用。我们看到了如何定义 Saga、如何使用 Generator 函数,以及如何使用 Effect。希望本文能帮助您更好的理解和使用 @redux-saga/core。

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