// store.js
new Vuex.Store({
state: {
count:0,
roles:[],
userInfo:{}
},
mutations: {
addCount(state){
state.count++;
}
},
actions: {
},
modules: {
}
})
//a.vue
addCount(){
this.$store.commit('addCount')
}
复制代码
//原来的提交
computed:{
a(){
return 1
}
b(){
return 2
}
}
//Vuex写法
import mapState from 'vuex'
//经过对象扩展符,支持vuex内的state映射返回,也能够支持原来的提交方式,若是当前页面没有额外缓存,仅仅只有vuex的数据变更
computed:mapState({
count:state=>state.count++;
})
//若是须要混入,写法以下,count的前置逻辑在vuex的getter中写好,最后映射到组件中,而a函数则能够就在函数内写好
computed:{
...mapState({
count:state=>state.count++
}),
a(){
return 1
}
}
复制代码
new Vuex.Store({
state: {
count:0,
roles:[],
userInfo:{}
},
mutations: {
addCount(state){
state.count++;
}
},
getters:{
userInfo:state=>state,
count:(state,getters)=>{
console.log(state) // state自己
console.log(getters.userInfo) //其余的缓存属性
}
}
})
复制代码
<template>
<span>{{count}}</span>
</template>
import {mapGetters} from 'vuex'
computed:{
...mapGetters([
'userInfo',
'count'
']) } 复制代码
//a.vue
a(){
this.$store.commit('addCount',{
num:4
})
}
//store
new Vuex.Store({
state: {
count:0,
roles:[],
userInfo:{}
},
mutations: {
addCount(state,param){
console.log(state) //为state对象
console.log(param.num) // 为comit传入的参数
state.count++;
}
},
})
复制代码
new Vuex.Store({
state: {
count:0,
roles:[],
userInfo:{}
},
Mutationos:{
add(){
}
}
Actions: {
//可采用对象结构
addCount({commit,state},{num}){
console.log(num) //为外部传入对象
commit('add')
},
})
复制代码
##mapActionsjavascript
import mapAction from 'vuex'
//a.vue
methods:{
...mapAction[
'addCount' //等同于this.$store.dispatch('addCount')
],
form(){
// 第一种调用vuex里的action方法
this.addCount()
//如要携带参数则是
this.addCount({num:1})
}
}
复制代码
new Vuex.Store({
state: {
count:0,
roles:[],
userInfo:{}
},
Mutationos:{
add(state,num){
console.log(num)
}
}
Actions: {
//可采用对象结构
async addCount({dispatch,state},{num}){
try{
const resultNums=await dispatch('shopping',{num:1})
} catch(err){
console.log(err)
}
},
async shoppping({commit,dispatch},{num}){
console.log(num) // 由resultNums返回的1
commit('add',num)
}
})
复制代码