Angular 中如何使用 Ngrx

阅读时长 8 分钟读完

什么是 Ngrx

Ngrx 是一个基于 Redux 的状态管理库,它提供了一种在 Angular 应用中管理状态的方式。它可以帮助我们在 Angular 应用中更好地组织和管理状态,并且可以提高应用的性能。

如何使用 Ngrx

安装依赖

首先,我们需要安装 Ngrx 相关的依赖。在命令行中输入以下命令:

创建 Store

在 Angular 中,我们可以使用 @ngrx/store 中的 createStore 方法来创建一个 Store。在 app.module.ts 中,我们需要导入 StoreModule 并使用 forRoot 方法来创建 Store。

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

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

在上面的代码中,我们导入了 reducers,它是一个纯函数,用于处理应用程序的状态。我们将在下一节中详细讨论它。

创建 Reducer

在 Ngrx 中,Reducer 负责处理状态的变化。Reducer 是一个纯函数,它接收当前的状态和一个 Action,并返回一个新的状态。

我们可以使用 @ngrx/store 中的 createReducer 方法来创建一个 Reducer。在 reducers.ts 中,我们可以定义我们的 Reducer。

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

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

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

在上面的代码中,我们定义了一个名为 counterReducer 的 Reducer。它有一个初始状态为 0,并且可以处理三个不同的 Action:incrementdecrementreset

创建 Action

在 Ngrx 中,Action 是一个简单的对象,它描述了状态的变化。我们可以使用 @ngrx/store 中的 createAction 方法来创建一个 Action。

counter.actions.ts 中,我们可以定义我们的 Action。

在上面的代码中,我们定义了三个不同的 Action:incrementdecrementreset

创建 Effects

在 Ngrx 中,Effect 可以用于处理异步操作。我们可以使用 @ngrx/effects 中的 createEffect 方法来创建一个 Effect。

counter.effects.ts 中,我们可以定义我们的 Effect。

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

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

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

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

在上面的代码中,我们定义了一个名为 loadCounter$ 的 Effect。它使用 CounterService 中的 getCounter 方法来获取计数器的值,并根据结果发出一个成功或失败的 Action。

创建 Service

在上面的代码中,我们使用了 CounterService 来获取计数器的值。在 counter.service.ts 中,我们可以定义我们的 Service。

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

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

在上面的代码中,我们定义了一个名为 CounterService 的 Service。它有一个名为 getCounter 的方法,用于获取计数器的值。

在组件中使用 Store

在我们的应用程序中,我们可以使用 @ngrx/store 中的 select 方法来选择我们的状态,并使用 dispatch 方法来发出 Action。

counter.component.ts 中,我们可以定义我们的组件。

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

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

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

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

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

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

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

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

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

在上面的代码中,我们定义了一个名为 CounterComponent 的组件。它使用 select 方法来选择我们的状态,并使用 dispatch 方法来发出 Action。

总结

在本文中,我们介绍了如何在 Angular 应用中使用 Ngrx。我们学习了如何创建 Store、Reducer、Action、Effect 和 Service,并在组件中使用 Store。希望这篇文章对你学习和理解 Ngrx 有所帮助。

示例代码

示例代码可以在 GitHub 上找到。

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

纠错
反馈