• 【无标题】


    <template>
        <div class="flex">
           <h2>{{$store.state.sum1}}</h2>
           <h2>{{$store.state.sum2}}</h2>
           <h1>{{$store.getters.bigSum}}</h1>
           <button @click="add1">+</button>
           <button @click="add2">+</button>
        </div>
    </template>
    <script>
        export default {
            data() {
                return {
                    num1: 1,
                    num2: 2,
                }
            },
            methods: {
                add1() {
                    // 方案1
                    this.$store.dispatch('add1',this.num1)
                },
                add2() {
                    // 方案2
                    this.$store.commit('ADD2',this.num2)
                }
            },
        }
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    import Vue from 'vue'
    import Vuex from 'vuex'
    Vue.use(Vuex)
    
    // dispatch
    // 服务员actions    动作、行为
    // commit 
    // 厨师mutations    改变、转变
    // state
    
    // 用于响应组件中的动作  
    // 我们可以在 action 内部执行异步操作
    const actions = {
      // 方案1
      add1(context,value){
        setTimeout(()=>{
          context.commit('ADD1',value)
        },3000)
        // if(context.state.sum1!==4){
        //   context.commit('ADD1',value)
        // }
      }
    }
    // 用于操作数据(state) 
    const mutations = {
        // 方案1
        ADD1(state,value){
          console.log(state,value,'2')
          state.sum1 += value
        },
        // 方案2
        ADD2(state,value){
          state.sum2 += value
        },
    }
    // 用于存储数据
    const state = {
       sum1:0,
       sum2:1,
    }
    // 用于将state中的数据进行加工
    const getters = {
       bigSum(state){
          return state.sum1*10
       }
    }
    export default new Vuex.Store({
        actions,
        mutations,
        state,
        getters
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    ** mapState,mapGetters**

    <template>
        <div class="flex">
           <!-- <h2>{{$store.state.sum1}}</h2> -->
           <!-- <h2>{{$store.state.name}}</h2> -->
           <!-- <h2>{{$store.state.title}}</h2> -->
           <!-- <h1>{{$store.getters.bigSum}}</h1> -->
           <h2>{{sum1}}</h2>
           <h2>{{name1}}</h2>
           <h2>{{title}}</h2>
           <h1>{{bigSum}}</h1>
           <button @click="add1">+</button>
        </div>
    </template>
    <script>    
        import { mapState,mapGetters } from 'vuex'
        export default {
            data() {
                return {
                    num1: 1,
                    sum1: null,
                }
            },
            computed: {
                // sum1() {
                //     return this.$store.state.sum1 
                // },
                // name(){
                //     return this.$store.state.name
                // },
                // title(){
                //     return this.$store.state.title
                // },
                // bigSum(){
                //     return this.$store.getters.bigSum
                // }
    
                // mapState 辅助函数仅仅是将 store 中的 state 映射到局部计算属性
                // ...mapState({sum1:'sum1',name1:'name1',title:'title'}),            
                ...mapState([
                    'sum1',
                    'name1',
                    'title'
                ]),            
                // mapGetters 辅助函数仅仅是将 store 中的 getter 映射到局部计算属性
                // ...mapGetters(['bigSum']),
                ...mapGetters({bigSum:'bigSum'}),
            },
            methods: {
                add1() {
                    this.$store.dispatch('step1',this.num1)
                }
            },
        }
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54

    在action中使用dispatch和state

    const actions = {
      step1(context,value){
        if(context.state.sum1<4){
          context.dispatch('step2',value)
        }else{
          context.dispatch('step3',value)
        }
      },
      step2(context,value){
        console.log('11')
        context.commit('ADD1',value)
      },
      step3(context,value){
        console.log('22')
        context.commit('ADD1',value)
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    机器学习中常用的分类算法总结
    2022.10.19 英语背诵
    自动化测试真的有被需要吗?
    【附源码】Python计算机毕业设计数字资源交流平台
    增强LinkedList实现瑞士轮赛制编排
    【Java面试八股文宝典之基础篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day09
    【无标题】
    Android手机防沉迷软件的基本原理
    2023云数据库技术沙龙MySQL x ClickHouse专场成功举办
    音频抗丢包以及暴力重传实现抗丢包80%
  • 原文地址:https://blog.csdn.net/weixin_47198950/article/details/132853828