zoukankan      html  css  js  c++  java
  • Vuex 第3节 Mutations修改状态

    Vuex 第3节 Mutations修改状态


    第3节 Mutations修改状态

    上节我们学习了怎么样读取state,那这节我们学习一下怎么样修改状态。这个常量我们在第1节的时候也碰到过,并且进行了加减的操作。那这节我们就具体学习一下,如何操作Mutations。

    $store.commit()

    vuex提供了commit方法来修改状态,我们粘贴出第1节课的代码内容,简单回顾一下,我们在button上的修改方法。

    <button @click="$store.commit('add')">+</button>
    <button @click="$store.commit('reduce')">-</button>
    

    store.js文件:

    const mutations={
        add(state){
            state.count++;
        },
        reduce(state){
            state.count--;
        }
    }
    

    传值

    这只是一个最简单的修改状态的操作,在实际项目中我们常常需要在修改状态时传值。比如上边的例子,是我们每次只加1,而现在我们要通过所传的值进行相加。其实我们只需要在Mutations里再加上一个参数,并在commit的时候传递就就可以了。我们来看具体代码:

    const mutations={
        add(state,n){
            state.count+=n;
        },
        reduce(state){
            state.count--;
        }
    }
    

    相应的,在Count.vue里修改按钮的commit()方法传递的参数,我们传递10,意思就是每次加10:

    <button @click="$store.commit('add',10)">+</button>
    

    这样两个简单的修改就完成了传值。

    模板获取Mutations方法

    实际开发中我们也不喜欢看到$store.commit( )这样的方法出现,我们希望跟调用模板里的方法一样调用。

    例如:@click="reduce" 就和没引用vuex插件一样。

    要达到这种写法,只需要简单的两步就可以了:

    1. 在模板Count.vue里用import 引入我们的mapMutations(直接将import {mapState} from 'vuex';改成下面的):
    import {mapState,mapMutations} from 'vuex';
    
    1. 在模板的<script>标签里添加methods属性,并加入mapMutations:
    methods:mapMutations(['add','reduce']),  //还是数组的形式
    

    通过上面两步,我们已经可以在模板中直接使用我们的reduce或者add方法了,就像下面这样:

    <button @click="add">+</button>
    <button @click="reduce">-</button>
    

    问题:我这里每加一次,就增加一个[object MouseEvent]???

  • 相关阅读:
    判断页面访问端是电脑还是手机?
    Vue使用总结
    JS面向对象,创建,继承
    你不得不知的逻辑或(||)与(&&)非(!)
    前端必备PS技巧
    你真的熟悉background吗?
    JS运动从入门到兴奋1
    过目不忘JS正则表达式
    W3C、MDN及html常用标签介绍
    js数据处理-----数据拷贝
  • 原文地址:https://www.cnblogs.com/Elva3zora/p/12714524.html
Copyright © 2011-2022 走看看