npm 包 @ngrx/effects 使用教程

阅读时长 6 分钟读完

什么是 @ngrx/effects?

@ngrx/effects 是 Angular 应用程序中常用的一种工具,它提供了一种可重用的方式来处理副作用,包括读取和写入状态以及与外部系统进行交互。@ngrx/effects 可以用于处理异步代码,网络请求、HTTP请求、WebSockets等等,这使得管理应用程序副作用的代码变得更加简单,可维护和可扩展。

@ngrx/effects 怎么用?

下面我们将通过以下步骤来学习如何使用 @ngrx/effects。

第一步:安装 @ngrx/effects

打开命令行窗口并导航到你的 Angular 项目根目录。输入以下命令来安装 @ngrx/effects。

npm install @ngrx/effects --save

第二步:定义 effects 类

在 Angular 项目中,我们需要创建一个专门的 effects 类,该类负责定义应用程序的副作用,包括异步操作和外部系统交互。下面是一个示例 effects 类的基本代码。

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

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

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

在这个示例代码中,我们定义了一个名为 UserEffects 的 effects 类。该类包含了一个名为 getUsers$ 的 Effect,这是一个用来获取用户的异步操作。它使用了一个名为 UserService 的服务来获取用户,并在获取成功和失败时触发了两个不同的 Action。

第三步:运行 effects 类

在 Angular 项目中,我们需要将 effects 类添加到应用程序模块的 providers 数组中以便应用程序能够正确的运行副作用。为此,我们需要打开 app.module.ts 文件并添加以下代码。

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

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

在这个示例代码中,我们将 UserEffects 类添加到 EffectsModule 的 providers 数组中来运行。我们还将 UserService 添加到 providers 数组中,以确保用户服务能够被注入到 UseEffects 类中来获取用户。

第四步:使用 effects 类

在 Angular 项目中,我们可以使用 Actions 类来触发我们的副作用。下面是一个使用 @ngrx/effects 获取用户并更新状态的完整示例。

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

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

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

在这个示例代码中,我们使用了 Store 类别获取应用程序中的状态,并使用 Actions 类来分派操作。我们还使用了 Angular 的 Async Pipe 来订阅并展示用户列表。

总结

经过以上的介绍,我们已经学习了 @ngrx/effects ,包括其基本定义和用法。我们了解了如何编写一个 effects 类来处理各种异步操作,并将其添加到 Angular 应用程序中。最后,我们还使用实际示例来演示了如何使用 @ngrx/effects 控制应用程序状态。

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