npm 包 ngrx-crud 使用教程

阅读时长 14 分钟读完

简介

Ngrx-crud 是一个基于 ngrx 实现的用于快速开发 CRUD 操作的 npm 包。通过简单的配置,你能够快速地实现此类操作。本篇文章将详细介绍 ngrx-crud 的使用教程及相关指导意义。

安装

在使用 ngrx-crud 之前,您需要先安装相关依赖,包括 @ngrx/store、@ngrx/effects 内容。在命令行中输入以下命令:

配置

创建模型

首先,我们需要为应用程序定义一个数据模型。对于一个 TODO 应用的例子,我们可以定义一个叫做 Todo 的模型。

创建状态和 Reducer

接下来,我们将为 Todo 定义一个状态,并编写需要的 reducer、action 和 effect。以下是如何定义一个状态的示例:

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

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

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

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

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

创建 Action 和 Effect

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

创建服务

下一步,我们将创建一个服务来管理数据,TodoService 会使用 HttpClient 发送 HTTP 请求到服务器。

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

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

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

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

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

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

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

导入模块

最后一步是将状态、action 和 effect 组合起来,并将 todoReducer 作为主 Reducer 导入应用程序的 Store 中。

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

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

使用

在组件中使用

现在,我们可以在组件中使用 ngrx-crud。在 Todo 组件中,我们通过将 ngrx-crud 相关函数绑定到组件的方法中,并为 ngrx-crud 提供配置对象,如下所示:

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

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

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

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

  ------- - ---

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

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

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

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

以上代码中,我们创建了 Todo 组件。组件中我们使用了 ngrx-crud 的增删改查 CRUD 操作,使用方法非常简单。为了在组件中使用 ngrx-crud,我们首先创建了一个 CrudService,并在构造函数中将 Store 传递给了服务。在下面的代码片段中,我们还创建了一个 CRUD 配置对象,该对象将 name(实体名)、idFieldName(主键字段名)和由我们提供的每个 CRUD 操作指定的标准操作打包后发送到 CrudService 的 constructor 中。

总结

本文详细介绍了如何使用 ngrx-crud 实现快速开发 CRUD 操作,包括如何创建模型、状态、Reducer、Action 和 Effect、服务以及如何在组件中直接使用 ngrx-crud 完成 CRUD 操作。希望通过本篇文章,您可以在自己的前端项目中更好地应用 ngrx-crud 来简化状态管理。

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

纠错
反馈