vuex中的划分模块module

国瑞前端:module模块化作为vuex中的一个组成部分,能够让数据更加的便于管理,接下来跟随我的步伐一起来看看到底是如何操作的,我们来做一个非常简单的例子,相信大家就可以理解了:…

国瑞前端:module模块化作为vuex中的一个组成部分,能够让数据更加的便于管理,接下来跟随我的步伐一起来看看到底是如何操作的,我们来做一个非常简单的例子,相信大家就可以理解了:

首先我们在默认的store.js文件夹中新建立结果模块如下(完整源代码):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const moduleA = {
  state: {
    ceshi: "这里是moduleA"
  },
  mutations: {}

};

const moduleB = {
  state: {
    ceshi2: "这里是moduleB",
  }

};


export default new Vuex.Store({
  modules: {
    a: moduleA,   //访问该模块就是this.$store.state.a
    b: moduleB
  },
  state: {
    count: 0,
    list: [1, 5, 8, 10, 30, 50],
    num: 50
  }
})

在配置路由

1
2
3
4
5
6
7
8
9
10
11
12
13
import Vue from 'vue'
import Router from 'vue-router'
import data from '@/components/data'
Vue.use(Router)

export default new Router({
  //mode: 'history', //没有#模式
  routes: [{
    path: '/',
    name: 'data',
    component: data
  }]
})

然后,我们在data.vue中进行调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//如果我们引入的模块是A  我们想要获取到moduleA中的ceshi的值,我们可以这样
<template>
  <div>
   {{ceshi}}
  </div>
</template>


  computed: {
    ceshi () {
      return this.$store.state.a.ceshi
    }

//部分冗余代码忽略不计

注意:

如果我们就是在主模块进行取值的,且取得那个值为count,那么写法为:

this.$store.state.count

如果我们是在moduleA中取值,则为

this.$store.state.moduleA.ceshi(前提是moduleA模块必须被引用了)

注意:

这样我们就能在页面放看到“这里是moduleA”这几个字了,别的提交,例如actions,mutations的提交方式都没有变化,如果它们的名称一样,那么它们都会执行,但是这样意义不大,按照规范做是没有问题的

作者: huanggr

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注