解决真空电子下状态管理的派遣没有效果问题
这个问题是解决基于某视频剪辑软件和电子的开发中使用状态管理的派遣无效的问题,即解决了请不要使用直接提交,使用调度代替这个。问题。
先允许我梳理一下目录结构,以便阅读的时候不会一头雾水,你到底说的这个文件是哪个……
其中/src/main是存放主配置文件的,/src/render下面有商店、路由器、组件等。
成分下面就是很多。某视频剪辑软件文件路由器下面就是一些路由配置的射流研究…文件和一些拦截器的js。
关键是商店,商店下面有一个index.js的主配置文件index.js,和一个模块文件夹。
index.js里面写的是(记住这句话,后面会用到):
从“vue”导入某视频剪辑软件从“vuex”导入状态管理从“Vuex-电子”导入{ createPersistedState,createSharedMutations }从“Vuex-电子”导入模块/modules'Vue.use(Vuex)导出默认的新Vuex .Store({ modules,plugins :[createPersistedState()],createSharedMutations() ],严格的:进程。ENV。node _ ENV!=='production'})而模块/下面存放各个实体,例如上图中的Auth.js和Counter.js,并通过index.js全部引入。
/** *该文件使`@/store/index.js `能够一次性导入所有状态管理模块*。不应有任何理由编辑此文件*/const文件=require.context(' . ',false,/\ .js $/)const modules={ } files . key().forEach(key={ if (key==')./index。js’)返回模块[key.replace(/(\).\/|\.js)/g ' ')]=文件(密钥).默认})导出默认模块然后来看一个状态管理的官方样例:
const state={ MAIN : 0 } const convents={ decents _ MAIN _ COUNTER(state){ state }。MAIN-},INCREMENT _ MAIN _ COUNTER(状态){ state。MAIN } } const actions={ somasync task({ commit }){//做点什么异步提交(' INVENTION _ MAIN _ COUNTER ')} }导出默认{状态、召集人、行动}之后很显然的,我想要在某视频剪辑软件的组件调用增量_主_计数器对计数器加1。
这个$商店。提交(' INVENTION _ MAIN _ COUNTER ');//这个$商店。提交(' INCREMENT _ MAIN _ COUNTER ',有效负载);如果是一般的vue,就好了,但是,我遇到了报错,说,请不要使用直接提交,使用调度来代替这个。
那好吧,没事,不就是不然用提交,非要用派遣嘛,那我就写一个行动,里面直接调用突变,就像这个样子:
const actions={ JUST _ INDEX({ commit }){ commit(' INDEX _ MAIN _ COUNTER ')} }然而奇怪的事情是,这个$商店。派单(' ADOW ')并不能运行,没反应,计数器还是0,不能赋值,就像是这个函数没有被执行一样。没有报错,没有任何异常,查也查不出什么问题。
网上的资料似乎也挺少。
折腾了很久,后来发现是真空电子里面一个插件的锅。
解决方法有两个。
方法一:
在存储/索引。射流研究…里面,就是上文特别强调了的那个文件,去掉createSharedMutations插件。
从“vue”导入某视频剪辑软件从“vuex”导入状态管理从“Vuex-电子”导入{ createPersistedState,createSharedMutations }从“Vuex-电子”导入模块/modules'Vue.use(Vuex)导出默认的新Vuex .存储({模块,插件:[createPersistedState()],createSharedMutations() //注释掉这一行】,严格的:流程。ENV。NODE _ ENV!=='production'})这是因为真空电子引入了一个用于多进程间共享状态管理商店的状态的插件。如果没有多进程交互的需求,完全可以不引入这个插件。
注释掉以后重启项目,用这个$store.commit('XXX ')就可以使用了。然而,如果需要多进程来处理怎么办?
方法二:
https://github.com/vue-electron/vuex-electron#installation
看第3条:
如果启用了createSharedMutations()插件,则需要在主进程中创建一个存储实例。为此,只需将这一行添加到您的主进程(例如src/main.js): import '中。/路径/到/你的/商店
这时,我们不能用第一种方法来解决问题。好在文件上也说了,加了一行导入。Find /src/main/index.js并在它前面添加一句话:
“进口”.“渲染器/商店”
之后一切正常,可以用派单操作。
最后,还有一个奇怪的问题:
直接调用state的时候,是不可能写这个的。$store.state.loginStatus,但它将是未定义的。必须这样写。$ store.state.auth.loginstatus .就这样。$store.state.Counter.main,好像不同的模块如果不指定名称就找不到了。
但是,在编写dispatch时,不需要指定名称,只需要dispatch('changeLoginStatus '),否则不应该像Dispatch一样编写它(' auth/change loginstatus ').
摘要
以上就是边肖介绍的Vue电子下Vuex调度无效的解决方案。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!如果你觉得这篇文章对你有帮助,请转载,请注明出处,谢谢!
版权声明:解决真空电子下状态管理的派遣没有效果问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。