// 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)
}
})
複製代碼