追求卓越一諾千金

藍藍設計||_郎酒股票代码,2011年成立qq炫舞紫钻,主創清華團隊|11选5漏洞赚千万,專注軟件和互聯網ui設計開發|-穿越神墓之何为逆天。擅長企業信息化管理-_丧尸类电影、監控_-盛大易购、大數據軟件UIUE谘詢和設計開發服務--男科悍医。立足UI|_艳艳乡村全文阅读,好好學習||106福利彩苹果怎么下载,天天進步-__乐山嘉州房产网!


Vue+Electron下Vuex的Dispatch沒有效果的解決方案

2019-5-16 釋然 前端及開發文章及欣賞


如果您想訂閱本博客內容|-234彩票网络平台提款,每天自動發到您的郵箱中|百度在线朗读器, 請點這裏

這個問題是解決基於 vue 和 electron 的開發中使用 vuex 的 dispatch 無效的問題|-陇南市人民政府网站,即解決了 Please, don't use direct commit's, use dispatch instead of this. 問題_-车位尺寸。

先允許我梳理一下目錄結構_|2019哪款app可以买足彩,以便閱讀的時候不會一頭霧水__-亿彩彩票是正规平台吗,你到底說的這個文件是哪個……



其中 /src/main 是存放主配置文件的-|货车司机罢运最新动态,/src/render 下麵有 store__-易彩网彩票软件、router-|_铆工是干什么的、components 等|--南华苑路。

components 下麵就是很多 .vue 文件-|_舞龙舞狮的由来,router 下麵就是一些路由配置的 js 文件和一些攔截器的 js_-_艾儿兰德 鲍德温。

關鍵是 store__幻想情侣演员表,store 下麵有一個 index.js 的主配置文件 index.js|叶尔凡,和一個 modules 文件夾_|地铁蓝衣水岛津实。

index.js 裏麵寫的是(記住這句話_|上海哪有蹦极的地方,後麵會用到)|-青春水漾:

import Vue from 'vue'
import Vuex from 'vuex'

import { createPersistedState, createSharedMutations } from 'vuex-electron'

import modules from './modules'

Vue.use(Vuex)

export default new Vuex.Store({
  modules,
  plugins: [
    createPersistedState(),
    createSharedMutations()
  ],
  strict: process.env.NODE_ENV !== 'production'
})

而 modules/ 下麵存放各個實體--_午夜神,例如上圖中的 Auth.js 和 Counter.js---柳焚余,並通過 index.js 全部引入--|河北区haobc。

/**
 * The file enables `@/store/index.js` to import all vuex modules
 * in a one-shot manner. There should not be any reason to edit this file.
 */

const files = require.context('.', false, /\.js$/)
const modules = {}

files.keys().forEach(key => {
  if (key === './index.js') return
  modules[key.replace(/(\.\/|\.js)/g, '')] = files(key).default
})

export default modules


然後來看一個 vuex 的官方樣例-|-廖慧敏落水:

const state = {
  main: 0
}

const mutations = {
  DECREMENT_MAIN_COUNTER (state) {
    state.main--
  },
  INCREMENT_MAIN_COUNTER (state) {
    state.main++
  }
}

const actions = {
  someAsyncTask ({ commit }) {
    // do something async
    commit('INCREMENT_MAIN_COUNTER')
  }
}

export default {
  state,
  mutations,
  actions
}


之後很顯然的||-云顶娱乐扫码,我想要在 Vue 的組件調用 INCREMENT_MAIN_COUNTER 對計數器加 1---镇江京江晚报。

this.$store.commit('INCREMENT_MAIN_COUNTER');
// this.$store.commit('INCREMENT_MAIN_COUNTER', payload);
1
2
如果是一般的 vue_陈浥萍,就 OK 了||锈水财阀战袍,但是-_陆中菊,我遇到了報錯|京东机票网,說|_陈斌凯,Please, don't use direct commit's, use dispatch instead of this.



那好吧_-|易发彩票app,沒事|-爱唯侦察地址,不就是不然用 Commit-_赢彩网是正规网站吗,非要用 Dispatch 嘛|神州行充值卡序列号,那我就寫一個 Action-龙玛显脉片,裏麵直接調用 Mutation--|农牧盗匪,就像這個樣子_|花香满屋:

const actions = {
  JUST_INCREASE ({ commit }) {
    commit('INCREMENT_MAIN_COUNTER')
  }
}
1
2
3
4
5
然而奇怪的事情是__|掌上彩票下载苹果手机,this.$store.dispatch('JUST_INCREASE') 並不能運行||2个月网赌输了40多万,沒反應_|-宠妃 肉的章节,計數器還是 0_|-联想旭日c466,不能賦值_|众发娱乐是违法赌博吗?,就像是這個函數沒有被執行一樣_|闪卡识字。沒有報錯-康熙来了20111201,沒有任何異常_-_3cp上彩票22,查也查不出什麼問題-|一动即欢。





網上的資料似乎也挺少|-无毒刷q币软件。

折騰了很久_|宋家王朝喜多郎,後來發現是 vuex-electron 裏麵一個插件的鍋|_河间市电视台。

解決方法有兩個_--易彩快3。

方法一_-_三棱锥性质:

在 store/index.js 裏麵-|168彩票网怎么样,就是上文特別強調了的那個文件|-众盈彩票怎么样,去掉 createSharedMutations 插件_|-寂寞先生刘悦。

import Vue from 'vue'
import Vuex from 'vuex'

import { createPersistedState, createSharedMutations } from 'vuex-electron'

import modules from './modules'

Vue.use(Vuex)

export default new Vuex.Store({
  modules,
  plugins: [
    createPersistedState(),
    createSharedMutations() // 注釋掉這一行
  ],
  strict: process.env.NODE_ENV !== 'production'
})


這是因為 vuex-electron 引入了一個用於多進程間共享 Vuex Store 的狀態的插件_-隐形人3。如果沒有多進程交互的需求-|-手机打字反应慢,完全可以不引入這個插件--|关于月球的知识。

注釋掉以後重啟項目|-1号彩票网APP,用 this.$store.commit('XXX') 就可以使用了-_东港宋老六。

然而_|-亿客隆彩票计划,如果需要多進程來處理怎麼辦-圣伊依?

方法二|陈龙 羽毛球:

https://github.com/vue-electron/vuex-electron#installation

看第 3 條__爱相约国际交友:

In case if you enabled createSharedMutations() plugin you need to create an instance of store in the main process. To do it just add this line into your main process (for example src/main.js):

import './path/to/your/store'
1
這種時候就不能用第一種方法來解決問題了_银盘服务。

好在文檔也說了-|-刘竟图片,加上一行導入__-四家中乙队欠薪。

找到 /src/main/index.js_-新化南站,在前麵加上一句|-|198彩票注册:

import '../renderer/store'
1


之後一切正常||门头沟歌华有线电话,可以使用 Dispatch 來進行操作了||33选7大星彩票开奖。



最後還有一個比較奇怪的問題||-优酷加速器下载:



在直接調用 state 的時候-|_强心脏20121127,這樣寫 this.$store.state.loginStatus 是不行的_|注册了彩票怎么注销,會 undefined-_优博仿生配方奶粉段,必須寫成 this.$store.state.Auth.loginStatus|_-众发娱乐平台跑路,就像是 this.$store.state.Counter.main 一樣||电影天堂快车下载,似乎可以解釋為_|雷霆扫毒蒙面人是谁,不同的模塊不指定名字的話就找不到|_北京466耳鼻喉科。

但是_至尊1元彩票,在寫 Dispatch 的時候又不需要指定名字了_|-京东商城打折,直接 dispatch('changeLoginStatus') 就行了-|博客大巴,不然難道不應該是也按照 dispatch('Auth/changeLoginStatus') 這樣子來寫嘛……
藍藍設計www.jwrumpff.com )是一家專注而深入的界麵設計公司-_qq名片互赞群,為期望卓越的國內外企業提供卓越的UI界麵設計-_-榆林市人力资源和社会保障局、BS界麵設計 ___爵士纯烟、 cs界麵設計 |标准间是什么意思、 ipad界麵設計 ||射雕之乞儿传说、 包裝設計 -_捷安特770、 圖標定製 ||爬爬装、 用戶體驗 -_-众盈投注记录怎么删除、交互設計|陈树发、網站建設 --东京热美女、平麵設計服務__-优彩登录。

標簽: Vue+Electron下Vuex的Dispatch沒有效果的解決方案 « 畫底部tab圖標不知道用麵性還是線性|-|黄i大片播放器? | 大陸19屆畢業展海報實力平平--如东实验小学万红,港澳台能不能扳回一局|||中国达人秀2017?»


訂閱Rss