zoukankan      html  css  js  c++  java
  • Vue-admin工作整理(十一):Vuex-动态注册模块

    概述:

      动态注册模块分为两种,一种是在根state下注册一个模块,一种是在模块下再自动注册一个模块

    第一种:根state下动态注册模块:

      思路:通过store来实现,this.$store来获取当前的实例内容,然后通过当前根实例的registerModule方法来实现模块动态注册:

    registerModule () {
          this.$store.registerModule('todo', { // 第一个参数为我们需要添加的模块名称,第二个是一个对象,写
            state: { // 这块和在user.js里的注册模块方法是一样的,这里在state里注册了一个todoList
              todoList: [
                'mutations',
                'actions'
              ]
            }
          })
        }

    使用的时候通过computed来初始,这里需要增加一个state实例下的指定模块是否存在的判断,有则继续执行,无则返回为空

    备注:computed:计算属性将被混入到 Vue 实例中。所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例。

    todoList: state => state.todo ? state.todo.todoList : []

    第二种:给模块下动态添加子模块:

      思路:与根模块下添加有唯一一个区别就是在调用registerModule方法的时候,以数组方式定义模块结构:['user', 'todo'],前者为模块名,后者为动态增加的子模块名

    // 给模块动态添加一个子模块:
        registerchildModule () {
          this.$store.registerModule(['user', 'todo'], { // 第一个参数为我们需要添加的模块名称,给uer模块添加了一个子模块,
          // 使用的是数组的形式,第二个是一个对象,写
            state: { // 这块和在user.js里的注册模块方法是一样的,这里在state里注册了一个todoList
              todoList: [
                'childmutations',
                'childactions'
              ]
            }
          })
        }

    其他取值和读取跟第一种完全一样

  • 相关阅读:
    [atAGC052D]Equal LIS
    [atAGC052C]Nondivisible Prefix Sums
    [atAGC052B]Tree Edges XOR
    [gym103055H]Grammy and HearthStone
    Vector底层结构和源码剖析
    ArrayList的底层源码分析及注意事项
    Collection接口
    集合介绍
    用户管理底层实现
    什么是Mybatis
  • 原文地址:https://www.cnblogs.com/cristin/p/9638905.html
Copyright © 2011-2022 走看看