vuex是实现组件全局状态(数据)管理的一种机制,方便组件之间进行数据共享
大范围频繁的共享数据的时候 ,就用vuex的store去
vuex的使用步骤:
1.安装vuex npm i vuex --save
2.导入vuex包 import vuex from 'vuex'
Vue.use(vuex)
3.创建store对象 (创建 store.js 文件)
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store =new Vuex.Store({
state:{count:0,name:'zhaoqin'},
mutations:{
add(state){
state.count++;
},
addN(state,step){
state.count+=step;
}
},
actions:{
addNasync(context,step){
setTimeout(()=>{
context.commit('addN',step)
},1000)
}
},
getters:{
showNum(state){
return '3030303'+state.count
}
}
})
export default store;
4.将store对象挂载到vue实例中(main.js文件)
import store from './store'
new Vue({
el:'#app',
render:h=>h(app),
store
})
5.访问全局数据值、方法(vuex的使用)
第一种方式:
this.$store.state.count
this.$store.commit('add')
this.$store.commit('addN',3)
this.$store.dispatch('addNasync');
this.$store.dispatch('addNasync',3);
this.$store.getters.showCount;
第二种方式:
1.从vuex中按需导入mapState(在组件里面)
import { mapState } from 'vuex'
import { mapActions } from "vuex"
import { mapMutations } from "vuex"
import { mapGeeters } from "vuex"
2.将全局数据,映射为当前组件的计算属性
computed:{
...mapGeeters{['showNum']}
...mapState{ ['count','sex'] }
}
3.mutations、actions这种函数属性,导入组件,然后在methods里面解构使用
methods:{
...mapActions{['add','sub']},
...mapMutations{['add','addN']}
}