<vuex第四弹>vuex之modules(前端网备份)

模块化,只针对于超大型项目
index.js
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const state = {
count:44
}
const mutations ={
jia(state,n){
state.count+=n.a;
},
jian(state){
state.count--
}
}
//vue 2.0官方建议在computed里面的不使用箭头函数,因为箭头函数的this 指向上一层,而function的this指向本层
const getters={
count:function(state){
return state.count+=100
}
}
const actions={
//context在actions里面代表着整个的store
jiaplus(context){
context.commit('jia',{a:1});
setTimeout(() => {
context.commit('jian');
}, 1000);
console.log('我先被执行了')
},
jianplus({commit}){
commit('jian')
}
}
const moduleA = {
state,
mutations,
getters,
actions
}
const moduleB = {
state:{
count:144
}
}
export default new Vuex.Store({
modules:{
a:moduleA,
b:moduleB
}
})
vue

<style>
p button{
width: 50px;
}
</style>
<template>
<div>
<div>
{{$store.state.a.count}}-{{count}}-{{$store.state.b.count}}
</div>
<p>
</p>
</div>

</template>

<script>
export default {
name:'te',
data(){
return{
counts:0
}
},
computed: {
count () {
return this.$store.state.a.count+1
}
},
methods:{
}
}
</script>
比如是app模块下的state的roleName,读取的时候2种写法,可以看到辅助函数更麻烦

import { mapState  } from 'vuex'        
computed: {
            ...mapState({
                "roleName": state => state.app.roleName 
            }),
//          roleName () {
//          return this.$store.state.app.roleName
//          }
          },

 

posted @ 2019-06-10 13:39  影思密达ing  阅读(178)  评论(0编辑  收藏  举报