本文已参加「新人创造礼」活动,一同开启创造之路。
@[toc]
效果展现:
留意点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
改动当地:
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装备项有点相似核算特点 留意点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
})
结果展现
本人其他相关文章链接
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模块化编码