• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

在Vuex中Mutations修改状态操作

vue 搞代码 4年前 (2022-01-08) 61次浏览 已收录 0个评论

这篇文章主要介绍了在Vuex中Mutations修改状态操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

上篇是读取state,这篇是修改状态。即如何操作Mutations。

一. $store.commit( )

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

1.store.js文件

 const mutations={ add<strong>本文来源gao@daima#com搞(%代@#码@网2</strong>(state){ state.count++ }, reduce(state){ state.count-- } }

2.在button上的修改方法

二. 传值

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

1.store.js

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

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

三.模板获取Mutations方法

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

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

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

import { mapState,mapMutations } from ‘vuex’

2.在模板的

在vuex.store中接收这个参数

 const store = new Vuex.Store({ // 定义的公共变量 state: { count: 1, students: [ { id: 1, name: 'dx', age: 18 }, { id: 2, name: 'yx', age: 18 }, { id: 3, name: 'ym', age: 32 }, { id: 4, name: '刘亦菲', age: 30 } ] }, // state中的变量只能在mutations中通过方法修改 mutations: { changeCount: function (state) { state.count++ console.log('改变了count') }, addStudent (state, stu) { state.students.push(stu) }//通过这种方式,接收来自组件传过来的新加入的学生 }, actions: { }, getters: { } })

第二种传参的方式

组件向vuex传参

 addstu () { const newstu = { id: 5, name: '张国荣', age: 44 } this.$store.commit({ type: 'addStudent', newstu: newstu })//原先是传入两个参数,现在直接传入一个对象 //type就是需要调用的mutations里面的方法 //newstu就是要求接收的对象,也就是新加入的学生 }

vuex接收组件传参

 mutations: { addStudent (state, playload) { state.students.push(playload.newstu) } },

需要注意的是,addstudent接收到的第二个参数是一个完整的对象,所以参数的使用略微有点不同

以上就是在Vuex中Mutations修改状态操作的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:在Vuex中Mutations修改状态操作

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址