npm 包 vuex-action-reload 使用教程

阅读时长 6 分钟读完

随着 Vue.js 在前端开发中的广泛应用,Vuex 作为它的状态管理方案也成为了主流之一。然而在实际开发中,有些场景下需要对状态进行重置(例如用户登出后将所有状态清空),此时使用 Vuex 自带的 action 会显得有些麻烦。针对这一问题,有一款 npm 包 vuex-action-reload 可以帮助我们更便捷地重置状态。本篇教程将详细介绍它的使用方法。

安装

使用 npm 可以很方便地安装 vuex-action-reload:

用法

首先在 store 的根目录下新建一个 reset.js 文件,用于定义重置状态的 action:

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

其中,reset 函数的参数 store 是我们在创建 Vuex.Store 实例时传入的对象。

之后,在 store 的根模块下添加一个 mutations,用于提供重置状态的方法:

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

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

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

这里使用了一个重要的方法 getDefaultState 和 getDefaultModuleNameStateKey。它们分别返回了根模块的初始状态以及指定模块某个状态的初始值:

接下来,在 store 的 index.js 中导入依赖,并在 actions 中使用 vuex-action-reload:

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

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

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

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

此时,我们就可以在任意组件中使用 reload action 来调用 reset 方法了。例如,在按钮的 click 事件中:

示例代码

在本地新建一个 Vue 项目,根据以上步骤配置好 Vuex 和 vuex-action-reload,然后使用以下代码进行测试:

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

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

以上代码将会对根模块下的 demo1 模块进行重置,将其列表状态的项数从 3 重置为初始值 2。

总结

使用 vuex-action-reload 可以让我们更方便地对 Vuex 状态进行重置。通过定义 reset action 和 mutations,我们可以像调用其他 action 一样调用 reload 效果。然而在使用过程中,我们需要主要保证 state 的定义规范以及保证指定的状态在 mutations 中正确地定义。

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

纠错
反馈