npm 包 action-u 使用教程

阅读时长 8 分钟读完

简介

在前端开发中,调用不同的方法来控制应用的状态、执行操作、处理事件等操作是非常常见的需求,而我们可以使用 Action-u 这个 npm 包来帮忙实现这些功能。

Action-u 是一个适用于 React、Angular、Vue 等现代前端框架的状态管理库。它提供的 API 简单易用,并且易于扩展,可以使我们很方便地编写出优雅、具有极强可复用性的代码。

安装

首先,我们需要在项目中引入 action-u。我们可以通过 npm 来安装它,执行以下命令:

快速开始

我们在开始之前,需要理解什么是 action。 在基于 action 的状态管理库中,action 是一个包含了 type 属性的纯对象,这个 type 属性用来描述 action 的类型。在接下来的示例中,我们将会使用计数器应用程序来演示 action-u 的使用方法。

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

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

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

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

当我们执行一个操作时,我们需要 dispatch 一个 action。 在上面的示例中,我们定义了一个 increment 的 action,当 dispatch 这个 action 时,它将会使 count 值加 1。

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

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

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

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

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

我们将上面的 Counter 组件绑定到 redux 中,当用户点击加号,increment action 将会被 dispatch。在 mapDispatchToProps 中我们将 props.increment 绑定到 action increment 上。

详细指南

创建 actions

我们可以通过 createActions 方法来创建 actions。这个方法接收一个 actions 对象和一个可选的初始 state 参数。在 actions 对象中,我们可以定义任意多个 action。

一个 action 包含了 typepayload 两个属性,其中 type 用来描述 action 的类型,payload 用来传递一些数据。

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

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

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

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

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

绑定 actions 和组件

我们可以使用 connect 方法将组件和 state/actions 绑定起来。connect 方法接收两个参数:mapStateToPropsmapDispatchToProps。在这两个方法中,我们可以将 state 和 actions 绑定到组件的 props 上。

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

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

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

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

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

在上面的例子中,我们在 mapDispatchToProps 中将 props.incrementprops.decrement 绑定到 actions.incrementactions.decrement 上。

定义 interface

我们可以使用 interface 方法在 actions 中定义一个接口。interface 方法接收一个参数,一个 actionType 对象,这个对象包含了 typepayload 和其他任意的属性。

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

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

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

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

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

当一个 action 包含了一个 interface 属性时,这个 action 将会被视为一个接口,并且这个接口可以被其他的 action extend。

继承 interface

我们可以通过 extend 方法来继承一个 interface。 extend 方法接收一个参数,这个参数可以是另一个 interface 或者一个 actionType 对象。

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

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

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

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

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

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

在上面的代码中,我们定义了一个 reset 的 action,它扩展了 increment 的 interface。这个 reset action 包含 INCREMENT 的所有属性,并添加了一个 RESET 属性。

总结

Action-u 是一个极其简单易用的前端状态管理库。在这篇文章中我们讲解了 action-u 的使用方法,并给出了一个计数器应用程序的示例代码。下一步,我们可以尝试在自己的项目中使用 action-u,以及在其中添加一些接口和 extend 式 action。

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

纠错
反馈