zoukankan      html  css  js  c++  java
  • 61 . VUEX state 和 mutations

        附图1.

    现在我有一个计数器,是在 state里面定义的count,初始是1000,这样的话 所有的组件都可以 直接访问$store.state.count 即可访问到,但是+和-逻辑是这样写的:

    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)   //注册vuex
    
    //新建VUEX对象
    const myVuex = new Vuex.Store({
        state:{count:1000},             //在state中存入count为1000
    
        getters:{},
        mutations:{},
        actions:{},
        modules:{},
    });
    
    
    export default myVuex   //导出VUX对象
    index.js 【vuex配置文件】
    <template>
      <div id="app">
        <!-- 一个简单计时器 -->
        <div class="count">
          
          <p>Number: &nbsp;&nbsp; {{ $store.state.count }}</p>      <!--即使可以实现 但是不规范-->
    
          <button @click="$store.state.count++">+</button>
    
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    
          <button @click="$store.state.count--">-</button>      <!--即使可以实现 但是不规范-->
        </div>
      </div>
    </template>
    
    
    
    <script>
    export default {
      // data() {
      //   return { count: 0 };
      // },
    };
    </script>
    
    
    <style scoped>
      .count{
          margin-left: 100px;
    }
    </style>
    App.vue App组件

    可以看到 功能是实现了 但是这样写是错的! 不可以这样写哦:

    最顶端那个图说明了如何修改流程 和 规范流程说明:

     如果我就是按照直接  @click="$store.state.count++  那么就会是这样:

      所以 直接跳过了 监听那步了,如果很多很多组件修改的话,那么你就不知道哪个修改了什么什么了,容易乱,所以我们更改行为然后要通过Commit函数来去改变state的值,,,,我们还要在浏览器安装拓展插件Devttols来监听,很强大的....这就是vuex 的本质:

     这个插件 百度找下即可 【谷歌进不去的情况下】

    所以我们这样修改state中的count:  【自己安装浏览器插件】

    先在 mutations中定义函数【自带state参数 可写入】,然后在组件中调用 this.$store.commit 函数,参数是字符串,是mutations中定义的函数名:

    具体看代码【注释给出】:

    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)   //注册vuex
    
    //新建VUEX对象
    const myVuex = new Vuex.Store({
        state:{count:1000},             //在state中存入count为1000
    
        mutations:{                      //这里定义函数来修改state的值 [定义的函数自带state参数]
            addCount(state){
                state.count++;
            },
            subCount(state){
                state.count--;
            }
        },              
        
        getters:{},
        actions:{},
        modules:{},
    });
    
    
    export default myVuex   //导出VUX对象
    index.js 【vuex配置文件】
    <template>
      <div id="app">
        <!-- 一个简单计时器 -->
        <div class="count">
          
          <p>Number: &nbsp;&nbsp; {{ $store.state.count }}</p>      <!--即使可以实现 但是不规范-->
    
          <button @click="add">+</button>
    
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    
          <button @click="sub">-</button>      <!--即使可以实现 但是不规范-->
        </div>
      </div>
    </template>
    
    
    
    <script>
    export default {
        methods:{
          add(){
            this.$store.commit('addCount')      //其中参数是 mutations 中的函数名
          },
          sub(){
            this.$store.commit('subCount')      //其中参数是 mutations 中的函数名
          }
        }
    };
    </script>
    
    
    <style scoped>
      .count{
          margin-left: 100px;
    }
    </style>
    App.vue App组件

    运行:【配合插件】

    本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/15159315.html

  • 相关阅读:
    基础抽象代数
    斜堆
    WC2018
    WC2019
    有向图上不相交路径计数
    生成树计数
    Pr&#252;fer序列
    反演
    1.1 Linux中的进程 --fork、孤儿进程、僵尸进程、文件共享分析
    Python程序的执行过程 解释型语言和编译型语言
  • 原文地址:https://www.cnblogs.com/bi-hu/p/15159315.html
Copyright © 2011-2022 走看看