vuex怎么动态引入store modules
短信预约 -IT技能 免费直播动态提醒
这篇文章主要为大家展示了“vuex怎么动态引入store modules”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vuex怎么动态引入store modules”这篇文章吧。
动态引入store modules
主要解决的问题每次建一个module需要自己去主index.js里面去注册
为了偷懒,也为了避免团队开发时同时对index.js 进行修改引发冲突
所以在index.js中 动态的对子目录和模块进行注册
我的目录结构是
import Vue from 'vue'import Vuex from 'vuex' Vue.use(Vuex) const dynamicModules = {}const files = require.context('.', true, /\.js$/) const dynamicImportModules = (modules, file, splits, index = 0) => { if (index == 0 && splits[0] == 'modules') { ++index } if (splits.length == index + 1) { if ('index' == splits[index]) { modules[splits[index - 1]] = files(file).default } else { modules.modules[splits[index]] = files(file).default } } else { let tmpModules = {} if ('index' == splits[index + 1]) { tmpModules = modules } else { modules[splits[index]] = modules[splits[index]] ? modules[splits[index]] : {namespaced: true, modules: {}} tmpModules = modules[splits[index]] } dynamicImportModules(tmpModules, file, splits, ++index) }} files.keys().filter(file => file != './index.js').forEach(file => { let splits = file.replace(/(\.\/|\.js)/g, '').split('\/'); dynamicImportModules(dynamicModules, file, splits)}) export default new Vuex.Store({ modules: dynamicModules, strict: process.env.NODE_ENV !== 'production'})
使用modules时遇到的坑
其实也不算坑,只是自己没注意看官网api,定义module另外命名时,需要在module中加一个命名空间namespaced: true
属性,否则命名无法暴露出来,导致报[vuex] module namespace not found in mapState()等错误。
以上是“vuex怎么动态引入store modules”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341