Vue技术-mapstart与mapGetters=》模块化+命名空间
导入mapState
import {mapState} from 'vuex'
使用mapState 获取state内容,避免过多的字符串在模板里面堆砌 借助mapStart生成计算属性,从start中读取数据(对象写法)
computed:{
bigSum(){
return this.$store.getters.bigSum
},
...mapState({ name: 'name' })
},
mounted(){
const x = mapState({name:'name'});
console.log('x is',x);
}
但是对于这段代码来说是es6的新语法规则,将一个数据对象的属性值给另一个对象
...mapState({ name: 'name' })
mapGetters就是获取getters数据
computed:{
...mapGetters(['bigSum']),
...mapState({ name: 'name' })
},
他们有对象写法和数组写法,但特别注意的是这个字符串和变量的简写方式。
四个map方法的使用
-
mapState方法:用于帮助我们映射state 中的数据为计算属性 computed: {
...mapState({sum:'sum',school:'school',subject:'subject'}),
...mapState(['sum','school','subject']),
},
-
mapGetters方法:用于帮助我们映射getters 中的数据为计算属性 computed: {
...mapGetters({bigSum:'bigSum'}),
...mapGetters(['bigSum'])
},
-
mapActions方法:用于帮助我们生成与actions 对话的方法,即:包含$store.dispatch(xxx) 的函数 methods:{
...mapActions({incrementOdd:'jiaOdd',incrementWait:'jiaWait'})
...mapActions(['jiaOdd','jiaWait'])
}
-
mapMutations方法:用于帮助我们生成与mutations 对话的方法,即:包含$store.commit(xxx) 的函数 methods:{
...mapMutations({increment:'JIA',decrement:'JIAN'}),
...mapMutations(['JIA','JIAN']),
}
备注:mapActions与mapMutations使用时,若需要传递参数需要:在模板中绑定事件时传递好参数,否则参数是事件对象。
模块化+命名空间
-
目的:让代码更好维护,让多种数据分类更加明确。 -
修改store.js const countAbout = {
namespaced:true,
state:{x:1},
mutations: { ... },
actions: { ... },
getters: {
bigSum(state){
return state.sum * 10
}
}
}
const personAbout = {
namespaced:true,
state:{ ... },
mutations: { ... },
actions: { ... }
}
const store = new Vuex.Store({
modules: {
countAbout,
personAbout
}
})
-
开启命名空间后,组件中读取state数据:
this.$store.state.personAbout.list
...mapState('countAbout',['sum','school','subject']),
-
开启命名空间后,组件中读取getters数据:
this.$store.getters['personAbout/firstPersonName']
...mapGetters('countAbout',['bigSum'])
-
开启命名空间后,组件中调用dispatch
this.$store.dispatch('personAbout/addPersonWang',person)
...mapActions('countAbout',{incrementOdd:'jiaOdd',incrementWait:'jiaWait'})
-
开启命名空间后,组件中调用commit
this.$store.commit('personAbout/ADD_PERSON',person)
...mapMutations('countAbout',{increment:'JIA',decrement:'JIAN'}),
|