vuex-第3节:Mutations修改状态

Posted jinsuo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vuex-第3节:Mutations修改状态相关的知识,希望对你有一定的参考价值。

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

$store.commit( )

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

store.js文件:

 

传值:

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

现在store.js文件里给add方法加上一个参数n。添加的地方我已经标黄了。

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

这样两个简单的修改我们就完成了传值,我们可以在浏览器中实验一下了。

模板获取Mutations方法

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

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

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

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

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

     

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

 

 

以上是关于vuex-第3节:Mutations修改状态的主要内容,如果未能解决你的问题,请参考以下文章

vuex

mutation中修改state中的状态值,却报[vuex] do not mutate vuex store state outside mutation handlers.

Vuex的工作流程,以及它的作用,使用场景

为啥vuex中要通过mutations修改state,而不是直接修改state

阿里前端常考vue面试题汇总

vuex的原理方法