zoukankan      html  css  js  c++  java
  • vuex 使用方法

    1、安装vuex扩展 : npm install vuex

    2、在componets目录下新建 store.js 文件 

    import Vue from 'vue' 
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    
    // 定义初始值
    const state = {
        num: 0
    }
    
    // 获取变量值
    const getters = {
        num: state => state.num
    }
    
    //定义触发状态对象方法,传入state整个对象
    //在页面中触发时使用this.$store.commit('mutationName') 触发Mutations方法改变state的值
    const mutations = {
        plus(state, num) {
            state.num += num;
        },
        minus(state, num) {
            state.num -= num;
        }
    }
    
    //异步执行方法,传入参数context,等同于整个store
    //处理Mutations中已经写好的方法 在页面中触发方式是 this.$store.dispatch(actionName)
    const actions = {
        plus({commit}, num) {
            // 调用mutations 方法
            commit('plus', num)
        },
        minus({commit}, num) {
            commit('minus', num)
        }
    }
    
    export default new Vuex.Store({
        state,
        mutations,
        actions,
        getters
    })
    
    
    /**
     * 定义多个模块
     * 定义一个模块,引入各个状态对象或方法
     */
    
    // Const moduleA = {     
    //     state,
    //     mutations,
    //     getters,
    //     actions
    // }
    
    
    /**
     * 引如多个模块
     */
    // export default new Vuex.Store ({     
    //     modules : {
    //         a : moduleA     //引入定义模块
    //     }
    // })
    

      属性值介绍:

      state:定义初始值

      getters:获取变量值

      mutations: 定义触发状态对象方法,传入state整个对象,在页面中触发时使用this.$store.commit('mutationName') 触发Mutations方法改变state的值

      actions:异步执行方法,传入参数context,等同于整个store,处理Mutations中已经写好的方法 在页面中触发方式是 this.$store.dispatch(actionName)

    3、在main.js 里添加引入store.js 代码

    // 引入sotre.js
    import store from './components/store.js'
    
    new Vue({
        store,  // store对象
        el: '#app',
        router,
        render: h => h(App)
    });
    

    4、新建 TestVuex.vue 

    <template>
        <div class="testVuex">
            <div>{{num}}</div>
            <button @click="plus">加2</button>
            <button @click="minus">加3</button>
        </div>
    
    </template>
    
    <script>
    
    import {mapGetters} from 'vuex'
    
    export default {
        name: 'testVuex',
        //computed 实时计算 Vue检测到数据发生变动时就会执行对相应数据有引用的函数。
        computed: {
            ...mapGetters([
                'num' // store.js 里定义num值
            ])
        },
        methods:{
          // 调用store.js 里actions定义的方法
          plus:function() {
            this.$store.dispatch('plus', 2);
          },
          minus:function() {
            this.$store.dispatch('minus', 3);
          }
        },
        data () {
          return {
          }
        }
    }
    
    </script>
    

    5、效果预览

      

  • 相关阅读:
    centos 用户管理
    rsync 实验
    文件共享和传输
    PAT 1109 Group Photo
    PAT 1108 Finding Average
    PAT 1107 Social Clusters
    PAT 1106 Lowest Price in Supply Chain
    PAT 1105 Spiral Matrix
    PAT 1104 Sum of Number Segments
    PAT 1103 Integer Factorization
  • 原文地址:https://www.cnblogs.com/gouge/p/7284388.html
Copyright © 2011-2022 走看看