解決Electron?store的commit和dispatch不好用問題
Vue 的Vuex 一般vue的commit和dispatch可以直接使用,然后到了桌面程序的Vuex(store)竟然不好使了,原因真是奇葩無比。
一、Electron使用store的commit和dispatch問題
this.$store.dispatch('project/setProject', item)
// this.$store.dispatch('project/setProject')
//this.$store.dispatch('project/setProject').then(() => {
// //------
//})
如果直接使用dispatch發(fā)現(xiàn),緩存并未更新,感覺就像是方法沒有執(zhí)行,因為沒有任何錯誤提示,這如何找問題!
this.$store.commit('INCREMENT_MAIN_COUNTER');
// this.$store.commit('INCREMENT_MAIN_COUNTER', payload);
然后我們換commit的時候又報如下錯誤,只能使用dispatch,這sb不是搞事情嗎,不好使還讓我使,是你抽了還是我抽了。




網(wǎng)上搜索一大堆的東西,基本很少有有用的信息,最后偶然發(fā)現(xiàn)竟然是vuex-electron插件的一個坑?。。?/p>
這坑埋的挺深?。?!
二、解決方法有兩個
方法1
在 store/index.js 里面,就是上文特別強調(diào)了的那個文件,去掉或注釋 createSharedMutations 插件

因為 vuex-electron 引入了一個用于多進程間共享 Vuex Store 的狀態(tài)的插件。
如果沒有多進程交互的需求,完全可以不引入這個插件。
注釋掉以后重啟項目,用 this.$store.commit('XXX') 就可以使用了
方法2
如果需要多進程來處理怎么辦?
看第 3 條

這樣就不能使用第一種方法來解決問題了。好在文檔也說了,加上一行導入。
找到 /src/main/index.js,在前面加上一句:
import '../renderer/store'
重啟之后一切正常,可以使用 Dispatch 來進行操作了!
使用方法


// 存 兩者使用有區(qū)別,注意區(qū)分
this.$store.dispatch('project/setProject', item) // 調(diào)用actions方法
this.$store.commit('project/SET_PROJECT', item) // 調(diào)用mutations方法
// 取 第一個project是js文件的名字,第二個是state設置的屬性key,如此才能獲取到值
console.log(this.$store.state.project.project)
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue?vant使用ImagePreview實現(xiàn)預覽圖片
這篇文章主要介紹了Vue?vant使用ImagePreview實現(xiàn)預覽圖片,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10
Vue模擬數(shù)據(jù),實現(xiàn)路由進入商品詳情頁面的示例
今天小編就為大家分享一篇Vue模擬數(shù)據(jù),實現(xiàn)路由進入商品詳情頁面的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
Vue使用vue-area-linkage實現(xiàn)地址三級聯(lián)動效果的示例
很多時候我們需要使用地址三級聯(lián)動,即省市區(qū)三級聯(lián)動,這篇文章主要介紹了Vue使用vue-area-linkage實現(xiàn)地址三級聯(lián)動效果的示例,感興趣的小伙伴們可以參考一下2018-06-06
vue el-table實現(xiàn)多選框回填的示例代碼
摘要:Vue多選框回填是實現(xiàn)表單數(shù)據(jù)高效處理的常見需求,本文主要介紹了vue el-table實現(xiàn)多選框回填的示例代碼,具有一定的參考價值,感興趣的可以了解一下2024-01-01
vite+vue3+element-plus項目搭建的方法步驟
因為vue3出了一段時間了,element也出了基于vue3.x版本的element-plus,vite打包聽說很快,嘗試一下,感興趣的可以了解一下2021-06-06

