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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐