vue Mutation 必须是同步函数 为什么_VueX(Vue状态管理模式)

3aa5e295eeaf637db3ed62e0b5e6e69e.png

做了这么久项目最近终于把VueX的用法搞懂了一些,做个笔记记录一下。

直接开搞:

1、首先我们用vue脚手架搭建一个vue项目(我这里是用的2.X的),然后在src中新建store文件夹,新建index.js,引入Vue与VueX,创建VueX.Store实例保存到变量store中,最后导出store,如下图:

8592df48b7727ef6693a5404ca7d6c68.png

2、在main.js中引入该文件,在vue实例全局引入store对象,如下图:

29be30d35f70e61ff2fbfaadb2a84784.png

然后就可以开始vuex业务了,首先是数据存储

State:

VueX中的数据源,需要保存的数据就保存在这儿(如下图):

cab61f2dc92423751c5a866c8e00ecf5.png

在页面中可通过this.$store.state来获取定义的数据(如下图):

c04fa2d45405a0b9c7b5c7c28e9afcc9.png

我们也可以使用mapState辅助函数的写法(如下图):

37c02d5adb930dd0496076a08d2c3d34.png

效果都是一样的:

d4c62a5f903b7c81dcb4a6f0b70e3ec0.png

Getters:

Getters相当于vue中的computed计算属性,它的返回值会根据依赖缓存起来,当它的依赖值发生改变了才会重新计算,直接上图:

15010ccb6bc3a77f4897cd745cffb968.png
修改index.js文件如上图

d1f32b77f93ac77f4fc82cae559ce1ed.png
修改HelloWorld.vue文件如上图

页面渲染如下图:

3705d56d3c49fb32ab03434fa5c32213.png

Getters我们也可以通过mapGetters辅助函数的方法调用(如下图):

330bfe81c7f19b8304afb5b9eb397f79.png

Mutations:

数据获取到了,但是要修改count的值唯一的方法就是提交mutation修改,现在加入“加一、减一”两个按钮到HelloWorld.vue中,分别用来执行addCount和reduceCount两个方法,然后调用mutations中的方法修改count的值:

7ce048794a43c862c1c1d7e0f7042e25.png
修改index.js文件如上图

226980218909a783d2b5b3a0cc80c0e5.png
修改HelloWorld.vue文件如上图

在页面中点击三次“加一”按钮得到下图结果:

9d957ecec1238de66308e90378e5e31e.png

Mutations一样可以调用mapMutations辅助函数的方法简写(如下图):

7608df02d09c01728ff6cf7845503142.png

Actions:

Mutations中只能执行同步操作,由于有时候会遇到异步执行的情况,因此我们会用到Actions,在Actions中提交mutataion再去修改状态值:

3a426f325f648679674991dde53dba97.png
修改index.js文件,先定义actions提交mutation的函数如上图

25029450e4f912157abe9affad7ad086.png
修改HelloWorld.vue文件如上图

在页面中点击“减一”,三秒后控制台打印“setTimeout end”,count数字加一,如下图:

3ff3b2306dbca685fd982d61461ef88a.png

Actions也有它的辅助函数方式mapActions(如下图):

9b9dd79576516a341da858eab95f7b9a.png

目前所了解的就这么多,over

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值