前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue Mutations修改状态

vue Mutations修改状态

原创
作者头像
wust小吴
修改2019-12-30 11:29:13
6550
修改2019-12-30 11:29:13
举报
文章被收录于专栏:风吹杨柳

一.$store.commit( )

Vuex提供了commit方法来修改状态

1.store.js文件

代码语言:txt
复制
const mutations={

    add(state){

        state.count++

    },

    reduce(state){

        state.count--

    }

}

2.在button上的修改方法

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

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

二.传值

最简单的修改状态的操作,在实际项目中我们常常需要在修改状态时传值。

比如上边的例子,是我们每次只加1,而现在我们要通过所传的值进行相加。

其实我们只需要在Mutations里再加上一个参数,并在commit的时候传递就就可以了。

我们来看具体代码:

1.store.js

代码语言:txt
复制
const mutations={

    add(state,n){

        state.count+=n

    },

    reduce(state){

        state.count--

    }

}

2.修改按钮的commit( )方法传递的参数,我们传递10,意思就是每次加10.

代码语言:txt
复制
 <button @click="$store.commit('add',10)">+</button>

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

三.模板获取Mutations方法

实际开发中我们也不喜欢看到$store.commit( )这样的方法出现,

我们希望跟调用模板里的方法一样调用。

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

1.在模板count.vue里用import 引入我们的mapMutations:

代码语言:txt
复制
import { mapState,mapMutations } from 'vuex'

2.在模板的<script>标签里添加methods属性,并加入mapMutations

代码语言:txt
复制
methods:mapMutations([

        'add','reduce'

]),

3.在模板中直接使用我们的reduce或者add方法

代码语言:txt
复制
<button @click="reduce">-</button>

注意:封装起来$store.commit

代码语言:txt
复制
reduce: function () {

      this.$store.commit('add', 10) // html标签是可以不写this

    }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档