npm 包 @ngrx/router-store 使用教程

AI 编程助手,豆包旗下的编程助手,提供智能补全、智能预测、智能问答等能力,节省开发时间,释放脑海中的创造力,支持 VSCode,点击体验 AI

前言

在开发 Web 应用程序时,我们通常需要使用路由来管理用户在应用程序中导航的路径。然而,管理路由状态可能是一项具有挑战性的任务。@ngrx/router-store 是一个基于 Redux 架构并且为 Angular 开发者提供的开源包,它允许我们将应用程序的路由状态管理到 Redux Store 中,通过这种方式来实现更易于管理、跟踪以及调试的应用程序。

这篇文章将会介绍 @ngrx/router-store 的使用,包括如何安装、如何集成到我们的 Angular 应用程序中,以及如何处理路由状态的变化。我们还将讨论如何集成其他 @ngrx 包,如 @ngrx/store,从而创建更有组织的大型应用程序。

安装

首先,我们需要安装 @ngrx/router-store 包,以及其他一些必要的 @ngrx 包,包括 @ngrx/store 和 @ngrx/effects。我们可以使用以下命令进行安装:

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

集成到应用程序中

在我们的应用程序中,我们需要依次进行以下步骤:

  1. 导入 RouterStoreModule
  2. 定义我们的路由状态
  3. 定义我们的应用程序状态
  4. 将 Redux Store 注入到我们的应用程序中
  5. 将路由状态集成到我们的应用程序状态中

下面,我们将详细讨论每个步骤。

导入 RouterStoreModule

首先,在 app.module.ts 中,我们需要导入 RouterStoreModule:

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

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

定义路由状态

然后,我们需要定义我们的路由状态。这个状态将保存在我们的 Redux Store 中,以便我们能够随时检查当前的路由状态。我们可以通过以下方式定义这个状态:

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

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

首先,我们定义了 RouterStateUrl 接口,该接口定义路由的状态,如 url、查询参数、参数和片段等。然后,我们定义了一个名为 State 的接口,它将路由状态记录在 router 中,使用 RouterReducerState 泛型类型。

定义应用程序状态

接下来,我们需要定义我们的应用程序状态。这个状态将保存我们应用程序的所有数据。

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

可以看到,这个接口和我们之前定义的 State 接口非常相似。对于应用程序状态和路由状态,我们都使用了 RouterReducerState 泛型类型。

注入 Redux Store 到应用程序中

然后,我们需要将我们的 Redux Store 注入到我们的应用程序中。这可以通过 AppModule 中的以下代码完成:

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

我们可以在构造函数中注入 Store,并且我们可以看到,我们的 Store 的类型是 AppState,这是我们在之前定义的应用程序类型。

将路由状态集成到应用程序状态中

最后,我们需要将路由状态集成到我们的应用程序状态中。我们可以通过以下代码完成:

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

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

这将启用 Redux 插件,使我们能够轻松地调试路由状态。此外,它还将 RouterState.Minimal 注入应用程序状态中,从而使我们能够将当前路由状态轻松地访问到。

状态选择器

现在我们已经集成了路由状态到我们的应用程序状态中,我们可以轻松地使用 @ngrx/store 包提供的 createSelector 函数来创建状态选择器。这些选择器可以根据需要选择状态,从而使我们能够轻松地链接路由状态和其他状态。

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

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

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

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

上面的代码显示了如何使用 createSelector 函数创建一个状态选择器,以选择当前路由的 URL。我们首先定义了我们要选择的路由状态,然后使用 createSelector 函数来转换该状态,以提供我们需要的值。

整合 @ngrx/effects 包

现在,我们已经了解了如何使用 @ngrx/router-store 包来管理我们应用程序的路由状态。但是,要创建一个大型的、组织良好的 Angular 应用程序还需要其他的 @ngrx 包。其中,@ngrx/effects 包可以提供一个简单的方法来管理副作用,并且支持高效的异步操作。

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

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

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

上面的代码显示了如何使用 @ngrx/effects 包来创建一个简单的副作用,并在应用程序中使用它。首先,我们在 MyEffects 类中定义了一个名为 myAction$ 的副作用,它使用 createEffect 函数来创建一个副作用。在这个例子中,我们对 Action 流中的 MY_ACTION 操作进行了监听,并在操作后调用了 MY_ACTION_COMPLETE 操作。

示例代码

下面是一个完整的示例代码,它演示了如何使用 @ngrx/router-store 包,以及如何将路由状态集成到应用程序状态中。同时,它还演示了如何使用 @ngrx/effects 包来处理副作用。

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

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

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

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

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

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

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

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

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

结语

在本文中,我们介绍了如何使用 @ngrx/router-store 包来管理应用程序的路由状态。我们还讨论了如何将路由状态集成到应用程序状态中,并使用 @ngrx/effects 包高效地处理副作用。通过这些步骤,我们可以创建一个有组织的、易于管理、跟踪以及调试的 Angular 应用程序。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedbe58b5cbfe1ea0611b62


猜你喜欢

  • npm 包 node-red-contrib-auth 使用教程

    前言 Node-RED 是一款基于流程(Flow)的编程环境,可以让用户通过连接各种输入、输出设备来创建自己的物联网应用。而 node-red-contrib-auth 正是在 Node-RED 中为...

    4 年前
  • npm 包 rigger-collate 使用教程

    简介 npm 包 rigger-collate 是一个集成打包工具,可以将多个 JavaScript 模块合并成一个文件。它采用灵活的配置方式,可以方便地在项目中使用。

    4 年前
  • npm 包 @types/babel-code-frame 使用教程

    在前端开发中,调试代码是非常常见的工作。有时候我们需要查看出错代码的上下文,这是 babel-code-frame 这个库可以派上用场。同时,如果我们在 TypeScript 项目中使用它,那么就需要...

    4 年前
  • npm 包 @types/github 使用教程

    在进行前端开发时,我们可能需要在项目中使用到 Github API,那么如何在 TypeScript 项目中使用 Github API 呢?这个时候,我们可以使用 npm 包 @types/githu...

    4 年前
  • npm 包 @sharkcore/eslint-config 使用教程

    在前端开发中,代码规范是非常重要的。为了保证代码质量和可维护性,我们需要使用 ESLint 这样的工具来进行代码规范的检查和修复。而 @sharkcore/eslint-config 是一款非常不错的...

    4 年前
  • npm 包 babel-plugin-object-rest-spread 使用教程

    介绍 babel-plugin-object-rest-spread 是一个 Babel 插件,它可以将对象的展开操作符(即 spread operator)转换成 ES5 兼容的代码。

    4 年前
  • npm 包 closure-templates 使用教程

    在前端开发中,我们经常需要处理各种数据,包括但不限于字符串、数字、对象、数组等等。在这些数据中,字符串的处理尤为重要,因为在 Web 应用中我们需要频繁地使用字符串来构造 HTML 页面、处理用户输入...

    4 年前
  • npm 包 obvious-closure-library 使用教程

    obvious-closure-library 是一款基于 Google Closure Library 封装的前端工具库,提供了一些优秀的工具和 API,帮助我们更加高效和方便的开发一些复杂的前端项...

    4 年前
  • npm 包 bower-auto-release 使用教程

    前言 如果你是一名前端开发工程师,你可能已经使用过 bower 作为你的包管理器。然而,手动发布包到 bower 上是一个繁琐而重复的任务,特别是当你需要在多个项目中管理大量依赖时。

    4 年前
  • npm 包 axiba-unit-test 使用教程

    在前端开发过程中,我们通常需要对代码进行单元测试,以确保代码的质量和稳定性。而 axiba-unit-test 就是一个可以帮助我们进行单元测试的 npm 包。 安装 首先我们需要在项目中安装 axi...

    4 年前
  • npm 包 @webhotelier/webpack-fast-refresh 使用教程

    Webpack 是现代前端开发中最流行的构建工具之一。当你使用 Webpack 进行开发时,你一定遇到过以下烦恼:每次修改代码后需要手动刷新网页,才能看到最新的页面样式和交互效果。

    4 年前
  • npm 包 es-array-method-boxes-properly 使用教程

    在前端开发中,我们经常会使用 JavaScript 的数组方法来处理数据。但是,对于一些初学者来说,涉及到数组方法的使用时往往容易出现一些不理想的方案,这就需要我们寻找更好的解决方法。

    4 年前
  • npm 包 array.prototype.map 使用教程

    在 JavaScript 中,Array 是一种常用的数据类型,使用的地方非常广泛。其中,Array.prototype.map 方法是一个很实用的方法,可以帮助我们在数组中循环并且替换其中的值。

    4 年前
  • npm 包 promise.allSettled 使用教程

    在现代前端开发中,异步操作是不可避免的。而 Promise 是 JavaScript 处理异步操作的利器之一,它可以在异步调用完成时为我们提供非常方便的处理方式。对于多个异步操作的情况,Promise...

    4 年前
  • npm包@types/random-js使用教程

    在前端开发中,随机数的应用非常广泛,例如生成验证码、随机生成测试数据等。而JavaScript中原生的随机数函数Math.random() 的随机性并不好,因此使用第三方库来生成随机数是非常必要的。

    4 年前
  • npm 包 cherry-pick 使用教程

    在前端开发中,我们常常需要使用第三方库来增加项目的功能或优化代码结构。但是随着项目变得越来越大,我们使用的第三方库也越来越多,这就会带来一些问题,比如代码冲突、文件过大等。

    4 年前
  • npm 包 claire-mocha 使用教程

    npm 是 JavaScript 的包管理器,它可以让开发者方便地安装、升级和删除代码库中的依赖关系。mocha 是一种 JavaScript 测试框架,它提供了一种更加灵活的方法来测试代码。

    4 年前
  • npm 包 matches 使用教程

    前言 在前端开发中,我们经常会遇到需要校验数据的场景。例如,在使用表单提交数据时,我们需要对用户的输入进行校验,而这种校验往往需要使用正则表达式来完成。而在 JavaScript 中,我们通过使用 R...

    4 年前
  • npm 包 react-15 使用教程

    什么是 npm? npm(全称为 Node Package Manager)是一个为 Node.js 程序员提供的默认软件包管理器。npm 是一个开源的命令行工具,允许用户从 NPM 网站下载和安装 ...

    4 年前
  • NPM 包 @types/domhandler 使用教程

    在使用 TypeScript 进行前端开发时,经常会遇到需要操作 DOM 的情况。虽然 DOM 的操作方式都很类似,但是 TypeScript 这种强类型语言对于 DOM 元素的类型定义却并不明确。

    4 年前

相关推荐

    暂无文章