vuex 动态注册方法 registermodule的实现

 更新时间:2019年07月03日 14:39:02   作者:cason6810   我要评论

这篇文章主要介绍了vuex 动态注册方法 registermodule的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

vuex(2.3.0+)可以用store.registermodule方法在进入路由时进行注册,离开路由时候销毁 actions, mutations, getters, state,在一定范围内相同名称不会被覆写

例子

index.js

传this 的写法

module.exports = {
  install(_this) {
    _this.$store.registermodule(['abc'], {
      namespaced: true,
      state: {
        righttest: 999
      },
      actions: {
        settest: ({commit}, val) => {
          commit('puttest', val)
        }
      },
      mutations: {
        puttest: (state, val) => {
          state.righttest = val;
        }
      }
    })
  },
  uninstall(_this) {
    _this.$store.unregistermodule(['abc'])
  }
};

不传this,有写 store 的写法

import store from '../../store';export default {
  install() {
    store.registermodule(['abc'], {
      namespaced: true,
      state: {
        righttest: 999
      },
      actions: {
        settest: ({commit}, val) => {
          commit('puttest', val)
        }
      },
      mutations: {
        puttest: (state, val) => {
          state.righttest = val;
        }
      }
    })
  },
  uninstall() {
    store.unregistermodule(['abc'])
  }
}

调用方法时应该在创建完实例之后的钩子中,未创建实例调用会找不到 store。

在install、uninstall时,传递this过去,可以在上面中直接调用。

dispath 时,如果设置了命名空间,则一定要加上,我这个因为没使用较复杂的命名,注册时的名字就在命名空间那用了。

test.vue

import abc from '../../store/test';
...
created() {
  // 挂载对应的 store
  abc.install(this);
  console.log(this.$store, 'install');
},
destroyed() {
  // 销毁对应的 store
  abc.uninstall(this);
  console.info(this.$store, 'uninstall');
},
methods: {
 test(){
  this.$store.dispatch('abc/settest', math.random());
 }

总结

当范围内使用动态方法注册 actions 时还是比较爽的,而且在destroyed 钩子中销毁可以节省一部分资源;

配置命名空间也可以避免覆盖问题,算是多一种手段吧(感觉还是应用在多模块,全局注册时用到这个);

当没有父子关系时,但还需要多页面共享状态,可以用动态注册就不太方便了;
(我好像还是没解决全局注册时方法过多的问题。。。)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • vue axioses同步请求解决方案

    vue axioses同步请求解决方案

    这篇文章主要介绍了vue axioses同步请求解决方案,需要的朋友可以参考下
    2017-09-09
  • vue实现用户自定义字段显示数据的方法

    vue实现用户自定义字段显示数据的方法

    今天小编就为大家分享一篇vue实现用户自定义字段显示数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 浅谈vue单一组件下动态修改数据时的全部重渲染

    浅谈vue单一组件下动态修改数据时的全部重渲染

    下面小编就为大家分享一篇浅谈vue单一组件下动态修改数据时的全部重渲染,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • 详解vue路由篇(动态路由、路由嵌套)

    详解vue路由篇(动态路由、路由嵌套)

    这篇文章主要介绍了详解vue路由篇(动态路由、路由嵌套),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 解析vue中的$mount

    解析vue中的$mount

    本文主要是带领大家分析$mount的相关知识,需要的朋友一起学习吧
    2017-12-12
  • vue+egg+jwt实现登录验证的示例代码

    vue+egg+jwt实现登录验证的示例代码

    这篇文章主要介绍了vue+egg+jwt实现登录验证的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • vue2单一事件管理组件通信

    vue2单一事件管理组件通信

    这篇文章主要为大家详细介绍了vue2单一事件管理组件通信的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • vue3.0 cli - 1 - npm 安装与初始化的入门教程

    vue3.0 cli - 1 - npm 安装与初始化的入门教程

    这篇文章主要介绍了vue3.0 cli - 1 - npm 安装与初始化的入门教程,本文通过实例代码相结合的形式,给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • vue cli2升级至vue cli3的方法步骤

    vue cli2升级至vue cli3的方法步骤

    这篇文章主要介绍了vue cli2升级至vue cli3的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 详解vuex中mutation/action的传参方式

    详解vuex中mutation/action的传参方式

    这篇文章主要介绍了详解vuex中mutation/action的传参方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论