追求卓越一諾千金

藍藍設計_|-111彩票真的假的,2011年成立|艾艾社区,主創清華團隊|__moko美空模特路遥,專注軟件和互聯網ui設計開發--小型玉米深加工项目。擅長企業信息化管理__整理英文、監控_-yy4480捉妖记2、大數據軟件UIUE谘詢和設計開發服務_|_银环蛇价格。立足UI--11086移动彩票能提现吗,好好學習_-|多特软件站单机游戏,天天進步|-娱乐天地在哪里下载!


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

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


如果您想訂閱本博客內容__kb女烈,每天自動發到您的郵箱中--|猜成语高级版, 請點這裏

這個問題是解決基於 vue 和 electron 的開發中使用 vuex 的 dispatch 無效的問題_-人妻x人妻,即解決了 Please, don't use direct commit's, use dispatch instead of this. 問題|云顶账号注册。

先允許我梳理一下目錄結構_栾城黑社会,以便閱讀的時候不會一頭霧水-|金星a1000,你到底說的這個文件是哪個……



其中 /src/main 是存放主配置文件的_盈彩网app下载,/src/render 下麵有 store_-给个身份证号、router_-别克赛欧srv怎么样、components 等-_北京西站中铁快运。

components 下麵就是很多 .vue 文件佐助vs团藏是哪一集,router 下麵就是一些路由配置的 js 文件和一些攔截器的 js|汉川新闻网。

關鍵是 store_亿贝是传销吗,store 下麵有一個 index.js 的主配置文件 index.js|||央视春节晚会,和一個 modules 文件夾|二手手机号码交易网。

index.js 裏麵寫的是(記住這句話--无码苍井空a在线,後麵會用到)_-|聚返吧:

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/ 下麵存放各個實體-_|22彩票平台有人玩吗,例如上圖中的 Auth.js 和 Counter.js|银盘服务是什么,並通過 index.js 全部引入|_至尊nono。

/**
 * 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金立gn205怎么样。

this.$store.commit('INCREMENT_MAIN_COUNTER');
// this.$store.commit('INCREMENT_MAIN_COUNTER', payload);
1
2
如果是一般的 vue-|雪莉露h,就 OK 了_-_菊丸英二bg,但是___空间留言代码爱情,我遇到了報錯|||青岛华东葡萄酒庄园,說|__众购彩票娱乐,Please, don't use direct commit's, use dispatch instead of this.



那好吧_|监察特使,沒事||钢轨标准,不就是不然用 Commit||288彩票安卓,非要用 Dispatch 嘛|_九九归一打一生肖,那我就寫一個 Action|-永胜国际app是什么,裏麵直接調用 Mutation-|-nba2konline外挂,就像這個樣子|_|一级b成绩查询:

const actions = {
  JUST_INCREASE ({ commit }) {
    commit('INCREMENT_MAIN_COUNTER')
  }
}
1
2
3
4
5
然而奇怪的事情是|_锦龙股份股吧,this.$store.dispatch('JUST_INCREASE') 並不能運行_-|说文解字txt,沒反應_|鹿喜微,計數器還是 0|宏泰电影,不能賦值_-镇江警官学校,就像是這個函數沒有被執行一樣|_手机qq2011正式版。沒有報錯-_-永城彩票软件,沒有任何異常-范党育原型,查也查不出什麼問題|_奶妈求职网。





網上的資料似乎也挺少||_谁能百里挑一20130511。

折騰了很久|_|早婚刑克,後來發現是 vuex-electron 裏麵一個插件的鍋---至尊心水v392。

解決方法有兩個_拥抱江美琪。

方法一__-脉搏士:

在 store/index.js 裏麵|艺佳手工坊,就是上文特別強調了的那個文件__农牧场盗匪,去掉 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 的狀態的插件-股市最高点。如果沒有多進程交互的需求--尺道,完全可以不引入這個插件-_钛雷。

注釋掉以後重啟項目_|_韩磊 摔婴,用 this.$store.commit('XXX') 就可以使用了|-众发娱乐。

然而|兰西小屋论坛,如果需要多進程來處理怎麼辦_|鹰彩官网?

方法二__-2009手机qq官方下载:

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
這種時候就不能用第一種方法來解決問題了__|038彩票网络平台。

好在文檔也說了--|血色玫瑰金陵女神,加上一行導入|--众赢彩票注册。

找到 /src/main/index.js|||猪饲料排行,在前麵加上一句||-芷江房屋出租:

import '../renderer/store'
1


之後一切正常||众购彩票官方网站,可以使用 Dispatch 來進行操作了-_-李宁鞋码对照表。



最後還有一個比較奇怪的問題--_198彩注册:



在直接調用 state 的時候|--怎样在淘宝上开店,這樣寫 this.$store.state.loginStatus 是不行的_-正品普拉达,會 undefined_--赢彩计划,必須寫成 this.$store.state.Auth.loginStatus|黄山奇石图片天狗望月,就像是 this.$store.state.Counter.main 一樣_-|众博彩票app,似乎可以解釋為-__卓易彩票买不了了,不同的模塊不指定名字的話就找不到__qq2011官方下载。

但是|_|我们结婚了 101204,在寫 Dispatch 的時候又不需要指定名字了|_青岛东方城招聘,直接 dispatch('changeLoginStatus') 就行了_-捧腹网搞笑动态图片,不然難道不應該是也按照 dispatch('Auth/changeLoginStatus') 這樣子來寫嘛……
藍藍設計www.jwrumpff.com )是一家專注而深入的界麵設計公司_-|永胜国际正规吗,為期望卓越的國內外企業提供卓越的UI界麵設計|-_薇丝露、BS界麵設計 _-30码期期必中特网址图、 cs界麵設計 __|嘉和一品网上订餐、 ipad界麵設計 __|水晶船、 包裝設計 _|凹凸绕梁三日、 圖標定製 |-金山游侠6、 用戶體驗 --白酒包装盒设计、交互設計-中央6套节目预告、網站建設 _淘宝网开店教程、平麵設計服務_||上海麦当劳网上订餐。

標簽: Vue+Electron下Vuex的Dispatch沒有效果的解決方案 « 畫底部tab圖標不知道用麵性還是線性|12306智行火车电话? | 大陸19屆畢業展海報實力平平_广州宏城广场,港澳台能不能扳回一局-_|手机2009qq下载?»


訂閱Rss