第一步:安装
npm install vuex --save-dev
第二步:引用
全局引入:main.js
import data from "./store/data";
new Vue({
el: '#app',
router,
store:data,
components: { App },
template: '<App/>'
})
第三步:写共享数据
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
let state = {
count:1,
arr:[{
id: 11,
name: '鱼香肉丝',
price: 12,
}, {
id: 22,
name: '宫保鸡丁',
price: 14
}, {
id: 34,
name: '土豆丝',
price: 10
}, {
id: 47,
name: '米饭',
price: 2
},{
id: 49,
name: '蚂蚁上树',
price: 13
},
{
id: 50,
name: '腊肉炒蒜薹',
price: 15
}]
}
let getters = {
getCount(state){
return state.count;
},
isEvenOrOdd(state){
if(state.count%2==0){
return '偶数'
}else{
return '奇数'
}
}
}
let actions = {
add({commit}){
commit('doAdd');
},
sub({commit}){
commit('doSub');
},
}
let mutations = {
doAdd(state){
state.count++;
},
doSub(state){
state.count--;
}
}
let store = new Vuex.Store({
state,getters,actions,mutations
})
export default store;
第四步:使用共享数据
<template>
<div>
<button @click="sub">减少</button>
<span>{{count}}</span>
<button @click="add">增加</button>
<p>{{isEvenOrOdd}}</p>
</div>
</template>
<script>
import {mapActions,mapGetters,mapMutations,mapState} from "vuex";
export default{
name:"broadcast",
// computed:mapState([
// 'count','arr'
// ]),
// computed:mapGetters([
// 'getCount'
// ]),
computed:{
...mapGetters({
count:'getCount',
isEvenOrOdd:'isEvenOrOdd'
})
},
methods:{
...mapActions({
add:'add',
sub:'sub'
})
}
}
</script>