zoukankan      html  css  js  c++  java
  • Vuex的总结

    1、state、mutations、actions、modules

    state → 用来定义变量

    mutations → 定义方法给state中的变量赋值

    actions → 调用mutations中的方法执行

    modules → 存放其他模块(其他的Store)

    来张图更清晰

    export default new Vuex.Store({
      //1、定义变量
      state: {
      },
      //2、给store中的变量赋值  
      mutations: {
          
      },
      //3、调用mutations中的方法
      actions: {
        
      },
      //其他的Store
      modules: {
      }
    })

    例子:

    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    
    export default new Vuex.Store({
      state: {
        Num:999
      },
      mutations: {
        ADD(state){
          state.Num += 1;
        }
      },
      actions: {
        FUNADD({commit,state}){ //结构{commit,state}
          //可以如下这样写,但不建议这样写
          //state.Num = 888
          //这样写
          commit('ADD')
        }
      },
      modules: {
      }
    })

    页面代码:

    <template>
      <div>
        <!-- 直接获取值 -->
        {{$store.state.Num}}
        <button @click="add()">加+1</button>
      </div>
    </template>
    
    <script>
    export default {
      data(){
    
      },
      mounted() {
        this.add()
      },
      methods:{
        add(){
          //用dispatch直接调用FUNADD,FUNADD是哪里来的呢? 来自actions中的FUNADD
          this.$store.dispatch('FUNADD');  //这里 FUNADD 是定义的一个常量名称,也可以是变量
        }
      }
    }
    </script>

    ----------------------------------------------------------------------------------------------

    来升级一下 store/ index.js

    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    
    var state = {
      Num:999
    }
    
    var mutations = {
      ADD(state){
        state.Num += 1;
      }
    }
    
    var actions= {
      FUNADD({commit,state}){ //结构{commit,state}
        commit('ADD')
      }
    }
    
    var getters = { //getters相当于计算属性
      isJiOrOu(state){
        return state.Num  % 2 ==0 ? '偶数':'奇数';
      }
    }
    
    export default new Vuex.Store({
      state,
      getters,
      actions,
      mutations,
      modules: {
      }
    })
    <template>
      <div>
        <!-- 直接获取值 -->
        {{$store.state.Num}}
        <button @click="add()">加+1</button>
        <!-- 奇、偶数 -->
        <h1>{{$store.getters.isJiOrOu}}</h1>
      </div>
    </template>
    
    <script>
    export default {
      data(){
    
      },
      mounted() {
        this.add()
      },
      methods:{
        add(){
          //用dispatch直接调用FUNADD,FUNADD是哪里来的呢? 来自actions中的FUNADD
          this.$store.dispatch('FUNADD');  //这里 FUNADD 是定义的一个常量名称,也可以是变量
        }
      }
    }
    </script>

    未完待续。。。。。

  • 相关阅读:
    定时器
    javascript之循环保存数值
    Web 前端之HTML和CSS
    [讲解]容斥原理
    [vijos1048]送给圣诞夜的贺卡<DFS剪枝>
    [vijos1145]小胖吃巧克力<概率dp>
    [noip2012]国王游戏<贪心+高精度>
    [codevs3118]高精度除法<高精度>
    [noip2016]组合数问题<dp+杨辉三角>
    [codevs2370]小机房的树<LCA>
  • 原文地址:https://www.cnblogs.com/youmingkuang/p/15721152.html
Copyright © 2011-2022 走看看