首页 前端知识 前端 - vue - vuex的使用

前端 - vue - vuex的使用

2025-03-19 11:03:49 前端知识 前端哥 586 216 我要收藏

vuex通常作为vue2项目中跨组件通信的桥梁(vue3中常用pinia) 其有五个api:

state(定义变量)、getters(监听变量)、 mutations(处理同步方法)、actions(处理异步方法)、moudels(将vuex分为多个板块)

1、安装vuex(vuex@3最适合vue2,vuex@4适合vue3)

npm i vuex@3

2、根据大多数开发者习惯 在src中新建名叫 store 的文件夹 index.js中初始化vuex modules放vuex的各个板块 在正常开发中 一般会是每个页面或每个板块作为一个modules

3、store的index.js中初始化vuex

注意!:若将红框部分的代码换为在main.js中编写 则会报错 至于为啥在main.js中就报错 我也不知道...有大佬懂的话可以在评论区讲解一下 求知欲超强~

4、导出store后 需要在main.js中注入到vue中

此时就算是vuex的基础搭建已完成了~

modules:

将vuex分为多个板块 因为在日常开发中 如果多个前端都在一个vuex中编写 则一定会导致git代码冲突和命名冲突 并且所有板块都堆在一起对后期维护很不友好

命名空间:vuex中getter、mutatios、actions的定义是全局的 可以避免在使用时 因定义的名字重复而产生的冲突 会影响vuex辅助函数的传参结构 具体用法看下文(日常开发中建议加上!)

state:

在vuex中定义变量的地方 相当于vue中的data( ){ return { } }

我们可以打印一下this.$store.state 看看这里面到底是外层的vuex 还是我们所写的modulesA

发现$sotre.state中一级参数有moduleA和初始化vuex时定义的test  所以获取该值的第一种方法:this.$store.state.modulesA.value

第二种方法使用vuex提供的辅助函数 mapState 可以将store中的属性映射到computed中 接受一个数组参数 数组中的值就是我们打印出来的$store.state中的值

getters:

监听state中变量的变化 相当于vue中的computed

因为使用了箭头函数 所以简化了写法 全写为:

newValue: ( state ) => { return state.value }

获取getters的方法:

和state同样的方法 打印一下getters 看看里面是啥 console.log( this.$store.getters )

所以 我们想要获取newValue的第一种方法:this.$store.getters[ "modulesA/newValue" ]

(可能有初学者看不懂 我解释一下 就是和我们平时获取对象的方法一样: obj.val或者obj[ "val" ] 只不过是因为modulesA/newValue 中有 / 所以只能用字符串获取)

第二种方法:mapGetters[ "moduleA",[ newtest ] ] 同样是在computed中获取 为什么和state的传参不一样呢?因为我们给moduleA加了命名空间 所以影响了mapGetters的传参

mutations:

处理同步方法,一般会用来修改state中的值

获取mutations的方法使用commit获取:

1、this.$store.commit( "moduleA/setValue" , "我是参数")

2、

命名空间为false时 mapMutatios的传参与mapState一致

actions:

处理异步方法 一般会在这里请求接口 并调用mutations中的方法修改state中的值

调用acitons使用dispatch:

1、this.$store.dispatch( "moduleA/getValueApi" , 参数)

2、

命名空间为false时 mapActions的传参与mapState一致

转载请注明出处或者链接地址:https://www.qianduange.cn//article/24064.html
标签
评论
发布的文章

动态规划感悟1

2025-03-20 12:03:52

华为NAS真实测评!

2025-03-20 12:03:52

Java设计模式之代理模式

2025-03-20 12:03:51

Linux 锁、线程同步

2025-03-20 12:03:48

大家推荐的文章
会员中心 联系我 留言建议 回顶部
浏览器升级提示:您的浏览器版本较低,建议您立即升级为知了极速浏览器,极速、安全、简约,上网速度更快!立即下载
复制成功!