<--!Count.vue-->
<template>
<div>
<h2>当前的和为{{sum}}</h2>
<h2>当前的和为{{bigSum}}</h2>
<h2>我在{{school}},遨游{{learn}}</h2>
<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(['sum','school','learn']),
...mapGetters(['bigSum'])
},
methods: {
...mapMutations({increment:'JIA',decrement:'JIAN'}),
...mapActions({incrementOdd:'jiaOdd',incrementWait:'jiaWait'})
}
};
</script>
- 使用vuex中引入的mapState(import {mapState} from ‘vuex’)可以解决标签中{{}}语法里过长;使用:…mapState({he:‘sum’…})结构在computed中;
- 对应的有一个mapGetters;一个是映射state中数据为计算属性,一个是映射getters中数据为计算属性;
- mapMutations:借助该方法生成对应的方法,方法中会调用commit去联系Mutations对话;
- mapActions:生成与actions对话的方法;后两种方法需要在使用的地方传实参,否则参数就会是默认的e事件对象;
const getters = {
bigSum(state) {
return state.sum*10
}
}
- store中配置项getters:用于将state中的数据进行加工,和computed很像,但是可以多组件使用;
- 在里面写自己要写的方法,有一个参数,就是state,靠返回值来进行得到结果;