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

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

如果您想訂閱本博客內容|_|阳江泡吧,每天自動發到您的郵箱中|-雅兰仕k700, 請點這裏

這個問題是解決基於 vue 和 electron 的開發中使用 vuex 的 dispatch 無效的問題-_|行乐居,即解決了 Please, don't use direct commit's, use dispatch instead of this. 問題-_亿贝娱乐登录。

先允許我梳理一下目錄結構-_内地综艺节目男主持人排行榜,以便閱讀的時候不會一頭霧水|-_经纬购,你到底說的這個文件是哪個……



其中 /src/main 是存放主配置文件的-|长沙王府井影城,/src/render 下麵有 store_-_道光二十五酒价格、router|-_苏州红星美凯龙、components 等-|聚美优品网页打不开。

components 下麵就是很多 .vue 文件||与官官同居的日子,router 下麵就是一些路由配置的 js 文件和一些攔截器的 js|-黄山奇石天狗望月。

關鍵是 store|苏州工业园区一站式服务中心,store 下麵有一個 index.js 的主配置文件 index.js-武汉苏泊尔炊具有限公司,和一個 modules 文件夾_||198娱乐。

index.js 裏麵寫的是(記住這句話|-_派尔快递,後麵會用到)|-|2698头彩网:

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/ 下麵存放各個實體---89彩票,例如上圖中的 Auth.js 和 Counter.js-|-亿彩堂app,並通過 index.js 全部引入||车位尺寸。

/**
 * 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|||5320dixm。

this.$store.commit('INCREMENT_MAIN_COUNTER');
// this.$store.commit('INCREMENT_MAIN_COUNTER', payload);
1
2
如果是一般的 vue__|2019年四不像正版,就 OK 了__|zcom电子杂志,但是_-琼瑶博客,我遇到了報錯|-_云南鼎通贵金属,說_-钱塘老娘舅2013直播,Please, don't use direct commit's, use dispatch instead of this.



那好吧||优优娱乐11选5好不好,沒事-_-365彩票上不去,不就是不然用 Commit-4008 111111,非要用 Dispatch 嘛-_|旺旺插件官方下载,那我就寫一個 Action--168开奖结果现l场下载,裏麵直接調用 Mutation-|易彩是什么,就像這個樣子|-222彩票安卓:

const actions = {
  JUST_INCREASE ({ commit }) {
    commit('INCREMENT_MAIN_COUNTER')
  }
}
1
2
3
4
5
然而奇怪的事情是-_阿诗郎,this.$store.dispatch('JUST_INCREASE') 並不能運行__帕斯卡显卡,沒反應__券老婆,計數器還是 0_-1010cpcc时时彩票,不能賦值||_众购彩票首页,就像是這個函數沒有被執行一樣||_佐助vs团藏是哪一集。沒有報錯--_天津热线adsl查询,沒有任何異常-|01彩票是不是骗局,查也查不出什麼問題-_-qq2010官方下载正式版。





網上的資料似乎也挺少_-|注册送28的彩票app。

折騰了很久--_跟骨消痛贴,後來發現是 vuex-electron 裏麵一個插件的鍋-__电大统考成绩查询。

解決方法有兩個--云顶娱乐输钱的出来。

方法一-_描写大自然的诗句:

在 store/index.js 裏麵__俏模牌轻靓减肥胶囊,就是上文特別強調了的那個文件|-|人族大讲堂,去掉 createSharedMutations 插件|-_智彩电子走势图11。

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') 就可以使用了|-最新电视剧迅雷下载。

然而___爱财部落网,如果需要多進程來處理怎麼辦__奥鹏教育学生请进?

方法二-|_阿诗玛 朱婧:

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||_碧美斯,在前麵加上一句_-阿里魔战:

import '../renderer/store'
1


之後一切正常|--金饶,可以使用 Dispatch 來進行操作了-|孝义六中。



最後還有一個比較奇怪的問題|_买家圈:



在直接調用 state 的時候_-11选5无死角每期必中,這樣寫 this.$store.state.loginStatus 是不行的|-赢钱彩从哪下载,會 undefined_|最新毛衣编织款式,必須寫成 this.$store.state.Auth.loginStatus-__杨幂不雅视频种子下载,就像是 this.$store.state.Counter.main 一樣|_小考成绩查询,似乎可以解釋為|_陈翔卡通图片,不同的模塊不指定名字的話就找不到_-亿贝是黑平台吗?。

但是_000712股吧,在寫 Dispatch 的時候又不需要指定名字了--嘉酒视窗,直接 dispatch('changeLoginStatus') 就行了|-烈女蒋究,不然難道不應該是也按照 dispatch('Auth/changeLoginStatus') 這樣子來寫嘛……
藍藍設計www.jwrumpff.com )是一家專注而深入的界麵設計公司--|2019还有什么夺宝软件,為期望卓越的國內外企業提供卓越的UI界麵設計_|锅盔牙子、BS界麵設計 |-鹤庆兰花交易网、 cs界麵設計 _银行职员张洁、 ipad界麵設計 _|促其反正、 包裝設計 __高桥亜由美、 圖標定製 _|168彩票网安全吗、 用戶體驗 -_|诺基亚官网pc套件下载、交互設計|__双色球精准预测6十1、網站建設 |-_晚托网、平麵設計服務--|众发彩票怎么玩。

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

分享到_|360彩票网官网导航: 新浪微博 騰訊微博 微信 微信 更多

Powered by emlog 京ICP備12006971號-1 sitemap