02vuex-modules
01===> module的理解:将一个大的系统进行拆分 拆分成若干个细的模块 给个模块都有自己的 state mutations 等属性 这样可以在自己的小模块中进行修改 方便维护 module的简单使用 (1)创建main.js(首页)在store.js同级中 (2)store.js中引入 (3)modules的形式注册 在store.js中写 { // Vuex 仓库文件(入口) import Vue from 'vue' import Vuex from 'vuex' //全局注册Vue.use(Vuex) // 引入子模块(add) import shopcar from "./ShopCar" import main from "./main" // 创建一个状态厂库 并且将它暴露出去 export default const store=new Vuex.Store({ modules:{ // key:(模块名) value(对应模块的配置) shopcar, //它相当于把shopcar.js暴露的那个对象放置在这里 main } }) // 取各个模块的值 console.log(store.state.shopcar.name) //这样可以拿到可拿到 购物出的的name值为 “我的值是购物车” console.log(store) //下面为输出的值 /* state: Object main: Object shopcar: Object */ export default store } 然后创建main.js(首页) { export default{ state: { val: "主文件需要的值", name: "我的值是主文件" }, mutations:{ }, } }
02====》如何在商家页面Merchant.vue 获取到 modules模块中--shangjia.js中state的数据 ps===>在main.js文件中 key值是不能够改名字的 value是引入进来的那个文件名 key:vaulue相同的话可以简写 main.js { //引入store实例 import storeaa from "./store/store"; new Vue({ router, store: storeaa, //这里是key:value的形式 这里是不能够改变的哦 key 的固定的值是store value的值可以跟引入的实例对象一致即可 // 这这里注册store后,全局可以共享 store了 render: h => h(App) }).$mount("#app"); } store.js { import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) // 引入子模块 (千万别忘记了) import shopcar from "./ShopCar" import main from "./main" import shangjia from './shangjia' // 创建一个状态厂库 并且将它暴露出去 export default const store=new Vuex.Store({ modules:{ // key:(模块名) value(对应模块的配置) shopcar, //它相当于把shopcar.js暴露的那个对象放置在这里 main, shangjia } }) export default store } shangjia.js modules中管理商家模块的数据 { export default { state:{ val:"我是商家页面数据", name:"哈哈哈商家" } } } Merchant.vue获取shangjia.js中state的数据 { <template> <div> <p>{{ test }}</p> </div> </template> export default { data(){ return{ test:"", } }, created() { this.test=this.$store.state.shangjia.val; }, } }
03===》 利用computed:{}计算属性提高性能 例2不变 利用computed只要母体数据不发生改变 它就不会发生改变 添加 Merchant.vue中 { 将值渲染出来 <h2>为了提升性能 {{test1}}</h2> computed: { test1() { return this.$store.state.shangjia.name; //返回 “哈哈哈商家” } }, }
04===>将所有的数据放在store.js的data中 两个页面的代码一模一样 A页面点击加1 B页面数字同样发生改变 ps===>在利用modules模块来管理数据的时候 你需要在store.js 引入相应的子模块 如例2 如果将所有的数据 都放在store.js 的data中饭就不需要 引入相应的子模块 ps===> 只要你去修改state中的值 你就考虑写mutations A.vue页面 B.vue页面 { <template> <div> <button @click="clickDec">-</button> <span> {{ num }} </span> <button @click="addNum">+</button> </div> </template> export default { data() { return { test: "" }; }, methods:{ addNum(){ // 提交一个mutations ,改变state中的值 相调用mutations中的addNum函数 this.$store.commit("addNum") }, clickDec(){ this.$store.commit("clickDec") } }, computed:{ num(){ return this.$store.state.num } }, }; } store.js { import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) // 创建一个状态厂库 并且将它暴露出去 export default const store=new Vuex.Store({ state(){ return{ test:"我输测试数据", num:0 } }, mutations:{ addNum(state){ state.num++; }, clickDec(state) { state.num--; }, } }) export default store }
5====》对例4进行优化 this.$store.commit("chang",1) 传参 判断出入的值正数还是负数 负数不能小于0 A页面 B页面 简化了代码 { <button @click="clickDec">-</button> <span> {{ num }} </span> <button @click="addNum">+</button> methods:{ addNum(){ // 提交一个mutations ,改变state中的值 用了第一种方式 this.$store.commit("chang",1) }, clickDec(){ //如果小于0 不执行改函数 if(this.$store.state.num==0){ //不能将这一条语句放在 最后 将没有意义 return; } this.$store.commit("chang",-1) // console.log(this.$store.state.num) } }, } store.js 简化了 { mutations: { chang(state, zhi) { state.num += zhi; } } }
遇见问题,这是你成长的机会,如果你能够解决,这就是收获。
作者:晚来南风晚相识
出处:https://www.cnblogs.com/IwishIcould/
本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
如果文中有什么错误,欢迎指出。以免更多的人被误导。
出处:https://www.cnblogs.com/IwishIcould/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!

支付宝

微信
如果文中有什么错误,欢迎指出。以免更多的人被误导。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY