zoukankan      html  css  js  c++  java
  • vuex的基本用法

    初接触vuex觉得里面的mapState、mapMutations、mapActions超级难懂,看官方的文档觉得太官方,难以理解,遂自己再学习了一遍。

    mapState、mapMutations、mapActions的用法是基本相同的,理解了其中一个,理解其他的也会很快

    vuex的基础用法

    安装了vuex   npm install vuex --save

    在main.js文件中引用

    import Vue from 'vue'
    import App from './App.vue'
    import store from './store'
    
    Vue.config.productionTip = false
    
    new Vue({
        store,
        render: h => h(App),
    }).$mount('#app')

    新建一个store.js文件

    import Vue from "vue"
    import Vuex from "vuex"
    
    Vue.use(Vuex)
    
    const state={
        money:2,
        count:1
    }
    const mutations={
        add:function(state){
            state.count++;
            state.money+=2;
        },
        reduce:function(state){
            state.count--;
            state.money-=2;
        }
    }
    const actions={
        add:({commit})=>{
            commit('add')
        },
        reduce:({commit})=>{
            commit('reduce')
        }
    }
    export default new Vuex.Store({
        state,
        actions,
        mutations
    })

    mapState的用法

    我对于这一块的内容也是幡然醒悟,如果没有引入mapState,在项目中需要使用$state.state.money。使用了mapState之后,将state的数据放在computed中去进行监听

    import {mapState} from 'vuex'
    computed:{ ...mapState([
    'money', 'count' ]) },

    这样引入后在项目中直接使用money.直接插值。

    <div>{{money}}</div>

    mapMutation的基本用法

    如果没有引入MapMutation的话,调用store里面的函数需要这样使用:

    <button @click="add1">增加</button>
    
    add1:function(){
                    var _this = this;
                    _this.$store.commit('add')
                    console.log(_this.$store)
                    // _this.$store.
    },

    使用后:

    import {mapMutations} from 'vuex'
    methods: {
                ...mapMutations({
                    'add':'add',
                    'reduce':'reduce'
                }),
    }

    这样可以直接使用:

    <button @click="add">增加</button>

    mapActions的用法相同

    同时也可以将本地存储联系起来,这样数据就不会在刷新的时候重置

    import Vue from "vue"
    import Vuex from "vuex"
    
    Vue.use(Vuex)
    
    const state={
        money:localStorage.money || 2,
        count:1
    }
    const mutations={
        add:function(state){
            state.count++;
            state.money+=2;
            localStorage.money=state.money
        },
        reduce:function(state){
            state.count--;
            state.money-=2;
            localStorage.money=state.money
        }
    }
    const actions={
        add:({commit})=>{
            commit('add')
        },
        reduce:({commit})=>{
            commit('reduce')
        }
    }
    export default new Vuex.Store({
        state,
        actions,
        mutations
    })
  • 相关阅读:
    divide two numbers using + opertor
    广播
    如何计算传递进来的参数个数 ?
    如何在脚本中使用参数 ?
    shell脚本中“$?”标记的用途是什么?
    JAVA BigDecimal的相加
    【推荐】腾讯android镜像(做Android开发的得好好利用下这个网站,国内的大公司还是可以滴……)
    AndroidDevTools简介
    Android SDK代理服务器解决国内不能更新下载问题
    SugarCRM 插件介绍
  • 原文地址:https://www.cnblogs.com/peilin-liang/p/11959226.html
Copyright © 2011-2022 走看看