• _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
    })
  • 相关阅读:
    String类型作为方法的形参
    [转] 为什么说 Java 程序员必须掌握 Spring Boot ?
    Centos打开、关闭、结束tomcat,及查看tomcat运行日志
    centos中iptables和firewall防火墙开启、关闭、查看状态、基本设置等
    防火墙没有关导致外部访问虚拟机的tomcat遇到的问题和解决方法
    可以ping通ip地址,但是访问80,或者8080报错
    JAVA的非对称加密算法RSA——加密和解密
    CA双向认证的时候,如果一开始下载的证书就有问题的,怎么保证以后的交易没有问题?
    图解HTTPS协议加密解密全过程
    https单向认证服务端发送到客户端到底会不会加密?
  • 原文地址:https://www.cnblogs.com/yyy1234/p/16335950.html
Copyright © 2020-2023  润新知