简介
1、组成部分:(三个对象类型)
- Actions:用来接收从Vue Componts的方法和数值,如果需要去调用数值也可以先去调用成功数值后再传给Mutation
- Mutation:利用Action传来的方法和数据,真正对数据进行加工处理。注意,所有业务逻辑(比如条件判断等)都在Action中,Mutation中只负责进行数据运算与加工
- State:将处理好的结果返回给Vue Components
Note:Vuex中的三个部分都要收到store的管理
使用方法
- 安装vuex:npm i vuex
- 使用vuex:Vue.use(Vuex)
- 利用store管理Actions,Mutations,State
- 让所有的组件vc都能看得到stort
步骤一:安装vuex
Note:Vue2 中使用Vuex3;Vue3中使用Vuex4
npm i vuex@3
步骤二:使用vuex
(1)在main.js中加入如下语句:
//引入vuex
import Vuex from 'vuex'
//使用插件
Vue.use(Vuex)
(2)(官网推荐)在src中新建一个store文件,在store文件中新建index.js文件
步骤三:配置Vuex的环境
index.js
//该文件用于创建Vuex中最为核心的store
//引入vue
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//使用Vuex
Vue.use(Vuex)
//准备actions--用于响应组件中的动作
const actions = {}
//准备mutations--用于操作数据
const mutations = {}
//准备state--用于存储数据
const state = {}
//创建并到处store
export default new Vuex.Store({
actions:actions,
mutations:mutations,
state:state
})
main.js
//引入vue
import Vue from 'vue'
//引入App
import App from './App.vue'
//引入插件
import vueResource from 'vue-resource'
//引入vuex
import Vuex from 'vuex'
//引入store
import store from './store/index.js'
Vue.config.productionTip = false
//使用插件
Vue.use(vueResource)
new Vue({
render: h => h(App),
store:store,
beforeCreate() {
Vue.prototype.$but = this
},
}).$mount('#app')
Count.vue
<template>
<div>
<h1>当前求和为:{{sum}}</h1>
<select v-model.number="n">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<button @click="increment">+</button>
<button @click="decrement">-</button>
<button @click="incrementOdd">当前求和为奇数再加</button>
<button @click="incrementWait">等一等再加</button>
</div>
</template>
<script>
export default {
name:'Count',
data(){
return {
n:1,//用户选择的数字
sum:0 //当前和
}
},
methods:{
increment(){
this.sum += this.n;
},
decrement(){
this.sum -= this.n;
},
incrementOdd(){
if(this.sum%2){
this.sum += this.n;
}
},
incrementWait(){
setTimeout(()=>{
this.sum += this.n
},500)
},
},
mounted() {
//console.log('Count',this)
}
}
</script>
<style lang="css">
button{
padding: 5px;
}
</style>
App.vue
<template>
<div>
<Count></Count>
</div>
</template>
<script scoped>
import Count from './components/Count.vue'
export default {
name:'App',
components:{Count},
mounted() {
//console.log('App',this);
}
}
</script>
Note:因为js文件会先扫描出import文件执行后再去按顺序执行其他语句,所以main.js中如果写上import store from './store/index.js’会报错,因为需要先使用Vuex,而Vue.use(Vuex)会在import后执行。为了解决这个问题需要在index.js中先使用Vuex,如上图所示。
步骤四:实现功能
需要实现的功能:
(1)点击+n;
(2)点击-n;
(3)当前数字是奇数时可以+n;
(4)延迟0.5s+n;
(5)n可以选择为0,1,2;
代码实现:
Count.vue
Note:在state中的数据都要通过$state进行获取。
<template>
<div>
<h1>当前求和为:{{$store.state.sum}}</h1>
<select v-model.number="n">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<button @click="increment">+</button>
<button @click="decrement">-</button>
<button @click="incrementOdd">当前求和为奇数再加</button>
<button @click="incrementWait">等一等再加</button>
</div>
</template>
<script>
export default {
name:'Count',
data(){
return {
n:1,//用户选择的数字
}
},
methods:{
increment(){
this.$store.commit('JIA',this.n);
},
decrement(){
this.$store.commit('JIAN',this.n);
},
incrementOdd(){
this.$store.dispatch('jiaOdd',this.n);
},
incrementWait(){
this.$store.dispatch('jiaWait',this.n);
},
},
mounted() {
//console.log('Count',this)
}
}
</script>
<style lang="css">
button{
padding: 5px;
}
</style>
index.js
//该文件用于创建Vuex中最为核心的store
//引入vue
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//使用Vuex
Vue.use(Vuex)
//准备actions--用于响应组件中的动作
const actions = {
// jia(context,value){
// context.commit('JIA',value);
// },
// jian(context,value){
// context.commit('JIAN',value);
// },
jiaWait(context,value){
setTimeout(()=>{
context.commit('JIA',value);
},500);
},
jiaOdd(context,value){
if(context.state.sum%2){ //注意这里必须是访问state的sum,如果直接访问sum是undefined
context.commit('JIA',value);
}
},
}
//准备mutations--用于操作数据
const mutations = {
JIA(state,value){
state.sum += value;
},
JIAN(state,value){
state.sum -= value;
}
}
//准备state--用于存储数据
const state = {
sum:0
}
//创建并到处store
export default new Vuex.Store({
actions:actions,
mutations:mutations,
state:state
})
步骤五:getters配置项
当需要进行封装数据运算时可以使用getters配置项,需要在index.js中进行配置与actions,mutations,state配置类似,具体操作如下:
Count.vue
<template>
<div>
<h1>当前求和为:{{$store.state.sum}}</h1>
<h1>当前求和放大十倍为:{{$store.getters.bigSum}}</h1>
<select v-model.number="n">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<button @click="increment">+</button>
<button @click="decrement">-</button>
<button @click="incrementOdd">当前求和为奇数再加</button>
<button @click="incrementWait">等一等再加</button>
</div>
</template>
<script>
export default {
name:'Count',
data(){
return {
n:1,//用户选择的数字
}
},
methods:{
increment(){
this.$store.commit('JIA',this.n);
},
decrement(){
this.$store.commit('JIAN',this.n);
},
incrementOdd(){
this.$store.dispatch('jiaOdd',this.n);
},
incrementWait(){
this.$store.dispatch('jiaWait',this.n);
},
},
mounted() {
//console.log('Count',this)
}
}
</script>
<style lang="css">
button{
padding: 5px;
}
</style>
index.js
//该文件用于创建Vuex中最为核心的store
//引入vue
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//使用Vuex
Vue.use(Vuex)
//准备actions--用于响应组件中的动作
const actions = {
// jia(context,value){
// context.commit('JIA',value);
// },
// jian(context,value){
// context.commit('JIAN',value);
// },
jiaWait(context,value){
setTimeout(()=>{
context.commit('JIA',value);
},500);
},
jiaOdd(context,value){
if(context.state.sum%2){ //注意这里必须是访问state的sum,如果直接访问sum是undefined
context.commit('JIA',value);
}
},
}
//准备mutations--用于操作数据
const mutations = {
JIA(state,value){
state.sum += value;
},
JIAN(state,value){
state.sum -= value;
}
}
//准备state--用于存储数据
const state = {
sum:0
}
//准备getters配置项
const getters = {
bigSum(state){
return state.sum*10
}
}
//创建并到处store
export default new Vuex.Store({
actions:actions,
mutations:mutations,
state:state,
getters:getters
})
变更需求
新需求:在页面中展示文字“我在尚硅谷学习前端”,尚硅谷,前端等学校,学科名称都存在vuex中。
效果如下图:
所需要的操作:
1、在index.js中添加school和subject属性,并设置为’尚硅谷‘和’前端‘;
2、在Count.vue文件中显示school和subject两个属性。
操作如下图所示:
但现在要进行对{{}}中的名称进行简写,可以利用mapState(),mapGetter()来实现。
mapState(),mapGetter()的语法介绍:
Count.vue
<template>
<div>
<h1>当前求和为:{{sum}}</h1>
<h1>当前求和放大十倍为:{{bigSum}}</h1>
<h1>我在{{school}}学习{{subject}}</h1>
<select v-model.number="n">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<button @click="increment">+</button>
<button @click="decrement">-</button>
<button @click="incrementOdd">当前求和为奇数再加</button>
<button @click="incrementWait">等一等再加</button>
</div>
</template>
<script>
import {mapState,mapGetters} from 'vuex'
export default {
name:'Count',
data(){
return {
n:1,//用户选择的数字
}
},
computed:{
//借助mapState生成计算属性,从state中读取数据(对象写法)
//...mapState({'sum':'sum','school':'school','subject':'subject'}),
//借助mapGetters生成计算属性,从getters中读取数据(对象写法)
//...mapGetters({'bigSum':'bigSum'}),
//借助mapState生成计算属性,从state中读取数据(数组写法)
...mapState(['sum','school','subject']),
//借助mapGetters生成计算属性,从getters中读取数据(数组写法)
...mapGetters(['bigSum']),
},
methods:{
increment(){
this.$store.commit('JIA',this.n);
},
decrement(){
this.$store.commit('JIAN',this.n);
},
incrementOdd(){
this.$store.dispatch('jiaOdd',this.n);
},
incrementWait(){
this.$store.dispatch('jiaWait',this.n);
},
},
mounted() {
//console.log('Count',this)
}
}
</script>
<style lang="css">
button{
padding: 5px;
}
</style>
mapMutations 与 mapActions
Count.vue
<template>
<div>
<h1>当前求和为:{{sum}}</h1>
<h1>当前求和放大十倍为:{{bigSum}}</h1>
<h1>我在{{school}}学习{{subject}}</h1>
<select v-model.number="n">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<button @click="increment(n)">+</button>
<button @click="decrement(n)">-</button>
<button @click="incrementOdd(n)">当前求和为奇数再加</button>
<button @click="incrementWait(n)">等一等再加</button>
</div>
</template>
<script>
import {mapState,mapGetters,mapMutations,mapActions} from 'vuex'
export default {
name:'Count',
data(){
return {
n:1,//用户选择的数字
}
},
computed:{
//借助mapState生成计算属性,从state中读取数据(对象写法)
//...mapState({'sum':'sum','school':'school','subject':'subject'}),
//借助mapGetters生成计算属性,从getters中读取数据(对象写法)
//...mapGetters({'bigSum':'bigSum'}),
//借助mapState生成计算属性,从state中读取数据(数组写法)
...mapState(['sum','school','subject']),
//借助mapGetters生成计算属性,从getters中读取数据(数组写法)
...mapGetters(['bigSum']),
},
methods:{
/* increment(){
this.$store.commit('JIA',this.n);
},
decrement(){
this.$store.commit('JIAN',this.n);
},
incrementOdd(){
this.$store.dispatch('jiaOdd',this.n);
},
incrementWait(){
this.$store.dispatch('jiaWait',this.n);
}, */
//借助mapActions生成方法,包含$state.dispathch()函数(对象写法)
...mapActions({'incrementOdd':'jiaOdd','incrementWait':'jiaWait'}),
//借助mapActions生成方法,包含$state.dispathch()函数(数组写法,但要求Count中名称与index.js中名称相同)
//...mapActions(['incrementOdd':'jiaOdd','incrementWait':'jiaWait']),
//借助mapMutations生成方法,包含$state.commit()函数(对象写法)
...mapMutations({'increment':'JIA','decrement':'JIAN'}),
//借助mapMutations生成方法,包含$state.commit()函数(数组写法,但要求Count中名称与index.js中名称相同)
//...mapMutations(['JIA','JIAN']),
},
mounted() {
//console.log('Count',this)
}
}
</script>
<style lang="css">
button{
padding: 5px;
}
</style>
多组件共享数据(实现一个数据不同组件进行显示)
不同的组件在导入vuex后就可以使用vuex中的数据了,如果想要使用的简便还可以用mapState,mapGetters等映射方式自动生成计算属性,用mapMutations,mapActions自动生成方法。
Count.vue
<template>
<div>
<h1>当前求和为:{{sum}}</h1>
<h1>当前求和放大十倍为:{{bigSum}}</h1>
<h1>我在{{school}}学习{{subject}}</h1>
<h3 style="color: red;">Person组件总人数是:{{personList.length}}</h3>
<select v-model.number="n">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<button @click="increment(n)">+</button>
<button @click="decrement(n)">-</button>
<button @click="incrementOdd(n)">当前求和为奇数再加</button>
<button @click="incrementWait(n)">等一等再加</button>
</div>
</template>
<script>
import {mapState,mapGetters,mapMutations,mapActions} from 'vuex'
export default {
name:'Count',
data(){
return {
n:1,//用户选择的数字
}
},
computed:{
//借助mapState生成计算属性,从state中读取数据(对象写法)
//...mapState({'sum':'sum','school':'school','subject':'subject'}),
//借助mapGetters生成计算属性,从getters中读取数据(对象写法)
//...mapGetters({'bigSum':'bigSum'}),
//借助mapState生成计算属性,从state中读取数据(数组写法)
...mapState(['sum','school','subject','personList']),
//借助mapGetters生成计算属性,从getters中读取数据(数组写法)
...mapGetters(['bigSum']),
},
methods:{
/* increment(){
this.$store.commit('JIA',this.n);
},
decrement(){
this.$store.commit('JIAN',this.n);
},
incrementOdd(){
this.$store.dispatch('jiaOdd',this.n);
},
incrementWait(){
this.$store.dispatch('jiaWait',this.n);
}, */
//借助mapActions生成方法,包含$state.dispathch()函数(对象写法)
...mapActions({'incrementOdd':'jiaOdd','incrementWait':'jiaWait'}),
//借助mapActions生成方法,包含$state.dispathch()函数(数组写法,但要求Count中名称与index.js中名称相同)
//...mapActions(['incrementOdd':'jiaOdd','incrementWait':'jiaWait']),
//借助mapMutations生成方法,包含$state.commit()函数(对象写法)
...mapMutations({'increment':'JIA','decrement':'JIAN'}),
//借助mapMutations生成方法,包含$state.commit()函数(数组写法,但要求Count中名称与index.js中名称相同)
//...mapMutations(['JIA','JIAN']),
},
mounted() {
//console.log('Count',this)
}
}
</script>
<style lang="css">
button{
padding: 5px;
}
</style>
Person.vue
<template>
<div>
<h1>人员列表</h1>
<h3>Count组件的求和:{{sum}}</h3>
<input type="text" placeholder="请输入名字" v-model="name" />
<button @click="add">添加</button>
<ul>
<li v-for="p in personList" :key="p.id">{{p.name}}</li>
</ul>
</div>
</template>
<script>
import {mapState} from 'vuex'
import {nanoid} from 'nanoid'
export default {
name:'Person',
data() {
return {
name:''
}
},
computed:{
...mapState(['personList']),
sum(){
return this.$store.state.sum
}
},
methods:{
add(){
//创建一个人的类型
const personObj = {id:nanoid(),name:this.name}
//添加一个人,这里直接跳过Actions,调用Mutations,因为业务逻辑比较简单
this.$store.commit('ADD_PERSON',personObj)
//写完清空
this.name = ''
}
}
}
</script>
index.js
//该文件用于创建Vuex中最为核心的store
//引入vue
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//使用Vuex
Vue.use(Vuex)
//准备actions--用于响应组件中的动作
const actions = {
// jia(context,value){
// context.commit('JIA',value);
// },
// jian(context,value){
// context.commit('JIAN',value);
// },
jiaWait(context,value){
setTimeout(()=>{
context.commit('JIA',value);
},500);
},
jiaOdd(context,value){
if(context.state.sum%2){ //注意这里必须是访问state的sum,如果直接访问sum是undefined
context.commit('JIA',value);
}
},
}
//准备mutations--用于操作数据
const mutations = {
JIA(state,value){
state.sum += value;
},
JIAN(state,value){
state.sum -= value;
},
ADD_PERSON(state,value){
state.personList.unshift(value);
}
}
//准备state--用于存储数据
const state = {
sum:0,
school:'尚硅谷',
subject:'前端',
personList:[
{id:'001',name:'张三'}
]
}
//准备getters配置项
const getters = {
bigSum(state){
return state.sum*10
}
}
//创建并到处store
export default new Vuex.Store({
actions:actions,
mutations:mutations,
state:state,
getters:getters
})
Vuex的模块化编码
模块化目的:方便进行处理分析,防止git分支合并时报错。
namespaced
功能:使模块化后的内容能够被mapState等map方法访问到,如下图:
为了能达到上图的效果可以采用如下做法:(在index.js文件中添加)
模块化后的代码:
index.js
//该文件用于创建Vuex中最为核心的store
//引入vue
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//使用Vuex
Vue.use(Vuex)
//count组件模块
const countAbout = {
namespaced:true,
actions:{
jiaWait(context,value){
setTimeout(()=>{
context.commit('JIA',value);
},500);
},
jiaOdd(context,value){
if(context.state.sum%2){ //注意这里必须是访问state的sum,如果直接访问sum是undefined
context.commit('JIA',value);
}
},
},
mutations:{
JIA(state,value){
state.sum += value;
},
JIAN(state,value){
state.sum -= value;
},
},
state:{
sum:0
},
getters:{
bigSum(state){
return state.sum*10
}
}
}
//person组件模块
const personAbout = {
namespaced:true,
actions:{},
mutations:{
ADD_PERSON(state,value){
state.personList.unshift(value);
},
},
state:{
school:'尚硅谷',
subject:'前端',
personList:[
{id:'001',name:'张三'}
]
},
getters:{}
}
//创建并到处store
export default new Vuex.Store({
modules:{
countAbout:countAbout,
personAbout:personAbout
}
})
Count.vue
<template>
<div>
<h1>当前求和为:{{sum}}</h1>
<h1>当前求和放大十倍为:{{bigSum}}</h1>
<h1>我在{{school}}学习{{subject}}</h1>
<h3 style="color: red;">Person组件总人数是:{{personList.length}}</h3>
<select v-model.number="n">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<button @click="increment(n)">+</button>
<button @click="decrement(n)">-</button>
<button @click="incrementOdd(n)">当前求和为奇数再加</button>
<button @click="incrementWait(n)">等一等再加</button>
</div>
</template>
<script>
import {mapState,mapGetters,mapMutations,mapActions} from 'vuex'
export default {
name:'Count',
data(){
return {
n:1,//用户选择的数字
}
},
computed:{
...mapState('countAbout',['sum']),
...mapState('personAbout',['personList','school','subject']),
...mapGetters('countAbout',['bigSum']),
},
methods:{
...mapActions('countAbout',{'incrementOdd':'jiaOdd','incrementWait':'jiaWait'}),
...mapMutations('countAbout',{'increment':'JIA','decrement':'JIAN'}),
},
mounted() {
//console.log('Count',this)
}
}
</script>
<style lang="css">
button{
padding: 5px;
}
</style>
Person.vue
<template>
<div>
<h1>人员列表</h1>
<h3>Count组件的求和:{{sum}}</h3>
<input type="text" placeholder="请输入名字" v-model="name" />
<button @click="add">添加</button>
<ul>
<li v-for="p in personList" :key="p.id">{{p.name}}</li>
</ul>
</div>
</template>
<script>
import {mapState} from 'vuex'
import {nanoid} from 'nanoid'
export default {
name:'Person',
data() {
return {
name:''
}
},
computed:{
...mapState('personAbout',['personList']),
sum(){
return this.$store.state.countAbout.sum
}
},
methods:{
add(){
//创建一个人的类型
const personObj = {id:nanoid(),name:this.name}
//添加一个人,这里直接跳过Actions,调用Mutations,因为业务逻辑比较简单
this.$store.commit('personAbout/ADD_PERSON',personObj)
//写完清空
this.name = ''
}
}
}
</script>
新练习
目的:
1、从getters读取数据
2、dispatch去联系actions
3、Actions联系后端的API
index.js
//该文件用于创建Vuex中最为核心的store
//引入vue
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//使用Vuex
import axios from 'axios'
//引入nanoid
import {nanoid} from 'nanoid'
Vue.use(Vuex)
//count组件模块
const countAbout = {
namespaced:true,
actions:{
jiaWait(context,value){
setTimeout(()=>{
context.commit('JIA',value);
},500);
},
jiaOdd(context,value){
if(context.state.sum%2){ //注意这里必须是访问state的sum,如果直接访问sum是undefined
context.commit('JIA',value);
}
},
},
mutations:{
JIA(state,value){
state.sum += value;
},
JIAN(state,value){
state.sum -= value;
},
},
state:{
sum:0
},
getters:{
bigSum(state){
return state.sum*10
}
}
}
//person组件模块
const personAbout = {
namespaced:true,
actions:{
addPersonWang(context,value){
if(value.name.indexOf("王") == 0){
context.commit('ADD_PERSON',value);
}
else{
alert('输入的人必须为姓王的人!!!');
}
},
addPersonServer(context){
axios.get('https://api.uixsj.cn/hitokoto/get?type=social').then(
response => {
context.commit('ADD_PERSON',{id:nanoid(),name:response.data})
},
error => {
alert(error.message)
}
)
}
},
mutations:{
ADD_PERSON(state,value){
state.personList.unshift(value);
},
},
state:{
school:'尚硅谷',
subject:'前端',
personList:[
{id:'001',name:'张三'}
]
},
getters:{
firstPersonName(state){
return state.personList[0].name;
}
}
}
//创建并到处store
export default new Vuex.Store({
modules:{
countAbout:countAbout,
personAbout:personAbout
}
})
Person.vue
<template>
<div>
<h1>人员列表</h1>
<h3>Count组件的求和:{{sum}}</h3>
<h3>列表中第一个人的名字是:{{firstPersonName}}</h3>
<input type="text" placeholder="请输入名字" v-model="name" />
<button @click="add">添加</button>
<button @click="addWang">添加一个姓王的人</button>
<button @click="addPersonServer">添加一个人,名字随机</button>
<ul>
<li v-for="p in personList" :key="p.id">{{p.name}}</li>
</ul>
</div>
</template>
<script>
import {mapState} from 'vuex'
import {nanoid} from 'nanoid'
export default {
name:'Person',
data() {
return {
name:''
}
},
computed:{
...mapState('personAbout',['personList']),
sum(){
return this.$store.state.countAbout.sum
},
firstPersonName(){
//注意模块化条件下getters内部的写法。
return this.$store.getters['personAbout/firstPersonName']
}
},
methods:{
add(){
//创建一个人的类型
const personObj = {id:nanoid(),name:this.name}
//添加一个人,这里直接跳过Actions,调用Mutations,因为业务逻辑比较简单
this.$store.commit('personAbout/ADD_PERSON',personObj)
//this.$store.dispatch('personAbout/addPersonWang',personObj)
//写完清空
this.name = ''
},
addWang(){
//创建一个人的类型
const personObj = {id:nanoid(),name:this.name}
//添加一个人,这里直接跳过Actions,调用Mutations,因为业务逻辑比较简单
//this.$store.commit('personAbout/ADD_PERSON',personObj)
this.$store.dispatch('personAbout/addPersonWang',personObj)
//写完清空
this.name = ''
},
addPersonServer(){
this.$store.dispatch('personAbout/addPersonServer')
}
}
}
</script>
Count.vue
<template>
<div>
<h1>当前求和为:{{sum}}</h1>
<h1>当前求和放大十倍为:{{bigSum}}</h1>
<h1>我在{{school}}学习{{subject}}</h1>
<h3 style="color: red;">Person组件总人数是:{{personList.length}}</h3>
<select v-model.number="n">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<button @click="increment(n)">+</button>
<button @click="decrement(n)">-</button>
<button @click="incrementOdd(n)">当前求和为奇数再加</button>
<button @click="incrementWait(n)">等一等再加</button>
</div>
</template>
<script>
import {mapState,mapGetters,mapMutations,mapActions} from 'vuex'
export default {
name:'Count',
data(){
return {
n:1,//用户选择的数字
}
},
computed:{
...mapState('countAbout',['sum']),
...mapState('personAbout',['personList','school','subject']),
...mapGetters('countAbout',['bigSum']),
},
methods:{
...mapActions('countAbout',{'incrementOdd':'jiaOdd','incrementWait':'jiaWait'}),
...mapMutations('countAbout',{'increment':'JIA','decrement':'JIAN'}),
},
mounted() {
//console.log('Count',this)
}
}
</script>
<style lang="css">
button{
padding: 5px;
}
</style>