• _src_求和案例_mapMutations与mapActions


    <template>
        <div>
            <h1>当前求和为:{{sum}}</h1>
            <h3>当前求和放大10倍为:{{bigSum}}</h3>
            <h3>我在{{school}},学习{{subject}}</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({he:'sum',xuexiao:'school',xueke:'subject'}),
    
                //借助mapState生成计算属性,从state中读取数据。(数组写法)
                ...mapState(['sum','school','subject']),
    
                /* ******************************************************************** */
    
                //借助mapGetters生成计算属性,从getters中读取数据。(对象写法)
                // ...mapGetters({bigSum:'bigSum'})
                
                //借助mapGetters生成计算属性,从getters中读取数据。(数组写法)
                ...mapGetters(['bigSum'])
    
            },
            methods: {
                //程序员亲自写方法
                /* increment(){
                    this.$store.commit('JIA',this.n)
                },
                decrement(){
                    this.$store.commit('JIAN',this.n)
                }, */
    
                //借助mapMutations生成对应的方法,方法中会调用commit去联系mutations(对象写法)
                ...mapMutations({increment:'JIA',decrement:'JIAN'}),
    
                //借助mapMutations生成对应的方法,方法中会调用commit去联系mutations(数组写法)
                // ...mapMutations(['JIA','JIAN']),
    
                /* ************************************************* */
    
                //程序员亲自写方法
                /* incrementOdd(){
                    this.$store.dispatch('jiaOdd',this.n)
                },
                incrementWait(){
                    this.$store.dispatch('jiaWait',this.n)
                }, */
    
                //借助mapActions生成对应的方法,方法中会调用dispatch去联系actions(对象写法)
                ...mapActions({incrementOdd:'jiaOdd',incrementWait:'jiaWait'})
    
                //借助mapActions生成对应的方法,方法中会调用dispatch去联系actions(数组写法)
                // ...mapActions(['jiaOdd','jiaWait'])
            },
            mounted() {
                const x = mapState({he:'sum',xuexiao:'school',xueke:'subject'})
                console.log(x)
            },
        }
    </script>
    
    <style lang="css">
        button{
            margin-left: 5px;
        }
    </style>
    //该文件用于创建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, //当前的和
        school:'尚硅谷',
        subject:'前端'
    }
    //准备getters——用于将state中的数据进行加工
    const getters = {
        bigSum(state){
            return state.sum*10
        }
    }
    
    //创建并暴露store
    export default new Vuex.Store({
        actions,
        mutations,
        state,
        getters
    })
  • 相关阅读:
    第 16 章 CSS 盒模型[下]
    第 16 章 CSS 盒模型[上]
    第 15 章 CSS 文本样式[下]
    第 15 章 CSS 文本样式[上]
    第 14 章 CSS 颜色与度量单位
    第 13 章 CSS 选择器[上]
    第 12 章 CSS 入门
    关于springboot上传文件报错:The temporary upload location ***is not valid
    Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)
    git命令-切换分支
  • 原文地址:https://www.cnblogs.com/yyy1234/p/16335950.html
Copyright © 2020-2023  润新知