首页 > 其他分享 >VUEX 使用学习六 : modules

VUEX 使用学习六 : modules

时间:2023-01-31 00:23:57浏览次数:59  
标签:... modules mutations actions 学习 state module 模块 VUEX

转载请注明出处:

  当Store中存放了非常多非常大的共享数据对象时,应用会变的非常的复杂,Store对象也会非常臃肿,所以Vuex提供了一个Module模块来分隔Store。通过对Vuex中的Store分隔,分隔成一个一个的Module模块,每个Module模块都拥有自己的state、mutation、actions和getters。

const moduleA = {
  state: () => ({ ... }),
  mutations: { ... },
  actions: { ... },
  getters: { ... }
}

const moduleB = {
  state: () => ({ ... }),
  mutations: { ... },
  actions: { ... }
}

const store = new Vuex.Store({
  modules: {
    a: moduleA,
    b: moduleB
  }
})

store.state.a // -> moduleA 的状态
store.state.b // -> moduleB 的状态

  对于模块中的mutations和getters,传入的第一个参数规定为state,而actions则依旧是context参数。如下:

const moduleA = {
  state: {
     count: 0
  },
  mutations: {
    increment (state) {
      // 这里的 `state` 对象是模块的局部状态
      state.count++
    }
  },

  getters: {
    doubleCount (state) {
      return state.count * 2
    }
  },
  actions: {
      // context对象其实包含了 state、commit、rootState。
      incrementIfOddRootsum (context) {
        if ((context.state.count + context.rootState.count) % 2 === 1) {
        // 调用mutations
        commit('increment')
      }
      }
  }
}

在module中通过mapState、mapGetters、mapActions和mapMutations等辅助函数来绑定要触发的函数

  第一种方式

methods: {
    ...mapActions([
        'some/nested/module/foo',
        'some/nested/module/bar'
    ])
}

  在vuex中,可以为导入的state、getters、actions以及mutations命名别名,,这样可以方便调用

methods: {
    ...mapActions([
        'foo': 'some/nested/module/foo',
        'bar': 'some/nested/module/bar'
    ])
}

 

  第二种方式
  对于这种情况,你可以将模块的空间名称字符串作为第一个参数传递给上述函数,这样所有绑定都会自动将该模块作为上下文。于是上面的例子可以简化为:

methods: {
  ...mapActions('some/nested/module', [
    'foo', // -> this.foo()
    'bar' // -> this.bar()
  ])
}

 

  在网上找到一个demo 示例,可参考学习: https://gitee.com/xiangbaxiang/vue-store

 

标签:...,modules,mutations,actions,学习,state,module,模块,VUEX
From: https://www.cnblogs.com/zjdxr-up/p/17077608.html

相关文章

  • VUEX 使用学习五 : getter
    转载请注明出处:Getter对Store中的数据进行加工处理形成新的数据。他不会修改state中的原始数据,起到的是包装数据的作用;有时我们需要从store中的state中派生......
  • 数学建模学习——Day04
    一、灰色关联分析1.基本思想:根据序列曲线几何形状的相似程度来判断其联系是否紧密。曲线越接近,相应序列之间的关联度就越大,反之就越小。2.应用1)进行系统分析: ·1.画......
  • react官方文档-高级部分-深入JSX学习
    前言:jsx好多用法,现在还第一次使用。实际上,JSX仅仅只是 React.createElement(component,props,...children) 函数的语法糖。 指定React元素类型JSX标签的第一......
  • react官方文档-高级部分-高阶组件学习
    前言:解释了redux实现原理,及避免一些坑,比如静态方法和ref不能传下去。 高阶组件(HOC)是React中用于复用组件逻辑的一种高级技巧。HOC自身不是ReactAPI的一部分,它是一......
  • 线性基学习总结
    0.引入令长度为\(n\)的有限集合\(S_0\in\mathbb{Z}\),考虑用01串表示其中的每个元素以及异或后可能产生的值,显然至少需要\(\lceillog_2max(S_0)\rceil\)位来表示,同时会......
  • MarkDown学习
    Markdown学习一、标题通过井号个数控制标题级数一级标题二级标题三级标题以此类推二、字体粗体:内容由两个星号括起来斜体:内容由一个星号括起来斜体加粗:内容由......
  • Linux学习-DAY6
    第4章Vim编辑器与Shell脚本命令1.Vim文本编辑器Vim编辑器中设置了3种模式—命令模式、末行模式和编辑模式,每种模式分别又支持多种不同的命令快捷键,这大大提高了工作效率,而......
  • 进程管理学习2
    4进程管理死锁问题设备分配形成环路进程通信问题导致死锁定义各并发进程彼此互相等待对方所拥有的资源,且这些并发进程在得到对方的资源之前不会释放自己所拥有的资......
  • jQuery基础学习随笔 2023
    jQuery多库共存//1.如果$符号冲突,就使用jQueryconsole.log(jQuery("div"));//$("div")//......
  • PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SV
    全文下载链接:http://tecdat.cn/?p=26219最近我们被客户要求撰写关于银行机器学习的研究报告,包括一些图形和统计输出。该数据与银行机构的直接营销活动相关,营销活动基于电......