本文已参加「新人创造礼」活动,一同开启创造之路。

《进阶篇第9章》学习vuex知识点后操练:把求和事例改成getters
@[toc]

效果展现:

《进阶篇第9章》学习vuex知识点后操练:把求和事例改成getters
留意点1:

问题:怎么完成“当时和为奇数再加”?

答案:

incrementOdd(){
	if(this.sum % 2){
		this.sum += this.n
	}
}

留意点2:

问题:select下拉框默以为1时,点击加号没问题,可是下拉框选中为2时,n值变成字符串了,不该该是数字类型名吗?

旧代码:无论设置 value=”1″还是 value=1都无效

<h1>当时求和为:{{sum}}</h1>
<select v-model="n">
	<option value="1">1</option>
	<option value="2">2</option>
	<option value="3">3</option>
</select>

答案:因为没设置值选中值为数值类型

方法1,运用v-bind

<h1>当时求和为:{{sum}}</h1>
<select v-model="n">
	<option :value="1">1</option>
	<option :value="2">2</option>
	<option :value="3">3</option>
</select>

方法2,v-model设置修饰符

<h1>当时求和为:{{sum}}</h1>
<select v-model.number="n">
	<option value="1">1</option>
	<option value="2">2</option>
	<option value="3">3</option>
</select>

9.3求和事例_getters

《进阶篇第9章》学习vuex知识点后操练:把求和事例改成getters

改动当地:

Count.vue新增<h3>标签

<h3>当时求和放大10倍为:{{$store.getters.bigSum}}</h3>

index.js中新增getters 装备项,并在new Vuex中添加getters

//预备getters——用于将state中的数据进行加工
const getters = {
    bigSum(state){
        return state.sum*10
    }
}
//创立并露出store
export default new Vuex.Store({
    actions,
    mutations,
    state,
    getters
})

留意点1:

问题:getters装备项是干啥的?

答案:当state中的数据需求加工后再运用时可以运用getters装备项加工处理,其中state有点相似数据源,而getters装备项有点相似核算特点

《进阶篇第9章》学习vuex知识点后操练:把求和事例改成getters
留意点2:

问题:假定我有个核算方法将sum*10显示出来,怎么设计?

答案: 第一种:{{sum*10}}标签中运用,缺陷:无法复用 第二种:运用核算特点完成,缺陷:只要当时组件才干运用该核算特点 第三种:运用getters装备项,他保存在vc.$strore上,所以所有组件都可以复用

完好代码

main.js

//引进Vue
import Vue from 'vue'
//引进App
import App from './App.vue'
//引进插件
import vueResource from 'vue-resource'
//引进store
import store from './store'
//关闭Vue的出产提示
Vue.config.productionTip = false
//运用插件
Vue.use(vueResource)
//创立vm
new Vue({
	el:'#app',
	render: h => h(App),
	store,
	beforeCreate() {
		Vue.prototype.$bus = this
	}
})

App.vue

<template>
	<div>
		<Count/>
	</div>
</template>
<script>
	import Count from './components/Count'
	export default {
		name:'App',
		components:{Count},
		mounted() {
			// console.log('App',this)
		},
	}
</script>

Count.vue

<template>
	<div>
		<h1>当时求和为:{{$store.state.sum}}</h1>
        <h3>当时求和放大10倍为:{{$store.getters.bigSum}}</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">+</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{
		margin-left: 5px;
	}
</style>

Index.js

//该文件用于创立Vuex中最为核心的store
import Vue from 'vue'
//引进Vuex
import Vuex from 'vuex'
//使用Vuex插件
Vue.use(Vuex)
//预备actions——用于响应组件中的动作
const actions = {
	/* jia(context,value){
		console.log('actions中的jia被调用了')
		context.commit('JIA',value)
	},
	jian(context,value){
		console.log('actions中的jian被调用了')
		context.commit('JIAN',value)
	}, */
	jiaOdd(context,value){
		console.log('actions中的jiaOdd被调用了')
		if(context.state.sum % 2){
			context.commit('JIA',value)
		}
	},
	jiaWait(context,value){
		console.log('actions中的jiaWait被调用了')
		setTimeout(()=>{
			context.commit('JIA',value)
		},500)
	}
}
//预备mutations——用于操作数据(state)
const mutations = {
	JIA(state,value){
		console.log('mutations中的JIA被调用了')
		state.sum += value
	},
	JIAN(state,value){
		console.log('mutations中的JIAN被调用了')
		state.sum -= value
	}
}
//预备state——用于存储数据
const state = {
	sum:0 //当时的和
}
//预备getters——用于将state中的数据进行加工
const getters = {
    bigSum(state){
        return state.sum*10
    }
}
//创立并露出store
export default new Vuex.Store({
	actions,
	mutations,
	state,
    getters
})

结果展现

《进阶篇第9章》学习vuex知识点后操练:把求和事例改成getters

本人其他相关文章链接

1.《进阶篇第9章》学习vuex知识点后操练:求和事例_纯vue版代码 2.《进阶篇第9章》学习vuex知识点后操练:把求和事例改成vuex版代码 3.《进阶篇第9章》学习vuex知识点后操练:把求和事例改成getters 4.《进阶篇第9章》学习vuex知识点后操练:把求和事例改成mapState与mapGetters 5.《进阶篇第9章》学习vuex知识点后操练:把求和事例改成mapMutations与mapActions 6.《进阶篇第9章》学习vuex知识点后操练:把求和事例改成多组件同享数据 7.《进阶篇第9章》学习vuex知识点后操练:把求和事例改成vuex模块化编码