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、效果预览

      

  • 相关阅读:
    nodejs学习笔记
    php操作mysql数据库
    HTML5 新特性总结
    万恶的浏览器兼容问题
    图标字体使用方法
    托管代码
    进程间通信,把字符串指针作为参数通过SendMessage传递给另一个进程,不起作用
    利用自定义消息处理函数的WPARAM或LPARAM参数传递指针
    自定义消息中如果需要定义WPARAM和LPARAM,该怎么使用和分配?
    提高VS2010运行速度的技巧+关闭拼写检查
  • 原文地址:https://www.cnblogs.com/gouge/p/7284388.html
Copyright © 2011-2022 走看看