嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片

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

2019-5-16    seo達(dá)人

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里

這個(gè)問題是解決基于 vue 和 electron 的開發(fā)中使用 vuex 的 dispatch 無效的問題,即解決了 Please, don't use direct commit's, use dispatch instead of this. 問題。

先允許我梳理一下目錄結(jié)構(gòu),以便閱讀的時(shí)候不會(huì)一頭霧水,你到底說的這個(gè)文件是哪個(gè)……



其中 /src/main 是存放主配置文件的,/src/render 下面有 store、router、components 等。

components 下面就是很多 .vue 文件,router 下面就是一些路由配置的 js 文件和一些攔截器的 js。

關(guān)鍵是 store,store 下面有一個(gè) index.js 的主配置文件 index.js,和一個(gè) modules 文件夾。

index.js 里面寫的是(記住這句話,后面會(huì)用到):

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/ 下面存放各個(gè)實(shí)體,例如上圖中的 Auth.js 和 Counter.js,并通過 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


然后來看一個(gè) 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 的組件調(diào)用 INCREMENT_MAIN_COUNTER 對(duì)計(jì)數(shù)器加 1。

this.$store.commit('INCREMENT_MAIN_COUNTER');
// this.$store.commit('INCREMENT_MAIN_COUNTER', payload);
1
2
如果是一般的 vue,就 OK 了,但是,我遇到了報(bào)錯(cuò),說,Please, don't use direct commit's, use dispatch instead of this.



那好吧,沒事,不就是不然用 Commit,非要用 Dispatch 嘛,那我就寫一個(gè) Action,里面直接調(diào)用 Mutation,就像這個(gè)樣子:

const actions = {
  JUST_INCREASE ({ commit }) {
    commit('INCREMENT_MAIN_COUNTER')
  }
}
1
2
3
4
5
然而奇怪的事情是,this.$store.dispatch('JUST_INCREASE') 并不能運(yùn)行,沒反應(yīng),計(jì)數(shù)器還是 0,不能賦值,就像是這個(gè)函數(shù)沒有被執(zhí)行一樣。沒有報(bào)錯(cuò),沒有任何異常,查也查不出什么問題。





網(wǎng)上的資料似乎也挺少。

折騰了很久,后來發(fā)現(xiàn)是 vuex-electron 里面一個(gè)插件的鍋。

解決方法有兩個(gè)。

方法一:

在 store/index.js 里面,就是上文特別強(qiáng)調(diào)了的那個(gè)文件,去掉 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'
})


這是因?yàn)?vuex-electron 引入了一個(gè)用于多進(jìn)程間共享 Vuex Store 的狀態(tài)的插件。如果沒有多進(jìn)程交互的需求,完全可以不引入這個(gè)插件。

注釋掉以后重啟項(xiàng)目,用 this.$store.commit('XXX') 就可以使用了。

然而,如果需要多進(jìn)程來處理怎么辦?

方法二:

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
這種時(shí)候就不能用第一種方法來解決問題了。

好在文檔也說了,加上一行導(dǎo)入。

找到 /src/main/index.js,在前面加上一句:

import '../renderer/store'
1


之后一切正常,可以使用 Dispatch 來進(jìn)行操作了。



最后還有一個(gè)比較奇怪的問題:



在直接調(diào)用 state 的時(shí)候,這樣寫 this.$store.state.loginStatus 是不行的,會(huì) undefined,必須寫成 this.$store.state.Auth.loginStatus,就像是 this.$store.state.Counter.main 一樣,似乎可以解釋為,不同的模塊不指定名字的話就找不到。

但是,在寫 Dispatch 的時(shí)候又不需要指定名字了,直接 dispatch('changeLoginStatus') 就行了,不然難道不應(yīng)該是也按照 dispatch('Auth/changeLoginStatus') 這樣子來寫嘛……
藍(lán)藍(lán)設(shè)計(jì)m.sdgs6788.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

日歷

鏈接

個(gè)人資料

存檔

嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片
<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • 亚洲免费久久| 国内精品亚洲| 欧美一区二区大片| 91久久精品国产| 一本大道久久精品懂色aⅴ| 欧美xx69| 亚洲靠逼com| 亚洲天堂成人在线观看| 亚洲欧美乱综合| 久久久亚洲欧洲日产国码αv | 国产精品国产三级国产普通话三级| 亚洲高清色综合| 亚洲精品乱码久久久久| 亚洲免费观看在线视频| 亚洲综合欧美| 久久久水蜜桃| 亚洲黄一区二区三区| 亚洲高清视频在线| 99精品国产在热久久下载| 亚洲一区二区三区免费视频| 久久久久久久一区| 欧美视频专区一二在线观看| 国产在线观看91精品一区| 亚洲国产天堂网精品网站| 亚洲一区二区三区免费观看| 美女久久网站| 亚洲午夜小视频| 免费日韩av电影| 国产九九视频一区二区三区| 亚洲三级免费| 久久欧美肥婆一二区| 99re8这里有精品热视频免费| 欧美亚洲一区| 欧美日韩亚洲不卡| 在线观看亚洲| 欧美一级视频精品观看| 亚洲韩国日本中文字幕| 亚洲欧美在线一区二区| 欧美成人免费网站| 亚洲精品中文在线| 亚洲欧洲综合另类| 久久久青草青青国产亚洲免观| 亚洲日本欧美日韩高观看| 欧美伊人久久| 国产精品自在欧美一区| 中文亚洲欧美| 亚洲欧洲日韩女同| 美女亚洲精品| 在线激情影院一区| 久久精品国产第一区二区三区| 日韩小视频在线观看专区| 欧美大片国产精品| 亚洲国产精品视频一区| 老牛国产精品一区的观看方式| 亚洲永久精品国产| 国产精品视频免费观看www| 午夜在线精品偷拍| 欧美不卡视频一区发布| 国内精品久久久久久影视8| 亚洲欧美日韩在线不卡| 艳女tv在线观看国产一区| 欧美日韩成人一区二区| 亚洲精选视频免费看| 91久久夜色精品国产网站| 蜜臀va亚洲va欧美va天堂| 亚洲高清电影| 亚洲高清网站| 欧美久久精品午夜青青大伊人| 亚洲麻豆av| 欧美亚洲综合网| 午夜精品av| 狠狠久久婷婷| 欧美v日韩v国产v| 欧美成人精品不卡视频在线观看| 亚洲激情视频在线播放| 91久久久一线二线三线品牌| 欧美日韩不卡视频| 午夜精品三级视频福利| 亚洲综合日韩在线| 国际精品欧美精品| 欧美成人亚洲成人日韩成人| 欧美成人激情视频| 亚洲图色在线| 欧美亚洲在线观看| 亚洲第一在线| 日韩视频在线观看一区二区| 国产精品一区二区三区久久久| 久久漫画官网| 欧美精品www在线观看| 亚洲欧美日韩一区二区三区在线| 香蕉久久夜色精品| 亚洲黑丝在线| 亚洲字幕在线观看| 91久久精品一区| 亚洲私拍自拍| 亚洲国产精品va| 亚洲特黄一级片| 亚洲成人原创| 亚洲一区二区免费视频| 在线成人亚洲| 欧美日韩视频一区二区| 欧美亚韩一区| 另类av导航| 国产精品国产三级欧美二区| 卡一卡二国产精品| 欧美日韩亚洲一区二区三区在线| 久久福利毛片| 欧美日韩亚洲综合在线| 麻豆91精品91久久久的内涵| 国产精品精品视频| 亚洲国产成人porn| 国产亚洲精品一区二区| 99精品视频免费观看| 亚洲国产成人在线视频| 亚洲欧美美女| 亚洲影院色无极综合| 欧美成人日本| 美女免费视频一区| 国产一区二区三区在线播放免费观看| 午夜性色一区二区三区免费视频| 久久久久**毛片大全| 欧美日韩国产影院| 乱中年女人伦av一区二区| 国产美女精品视频| 亚洲精品美女在线观看| 亚洲电影免费观看高清完整版| 亚洲女爱视频在线| 亚洲一区二区三区影院| 欧美日韩不卡| 亚洲三级性片| 亚洲激情校园春色| 久久夜色精品亚洲噜噜国产mv| 欧美中文字幕| 国产美女诱惑一区二区| 亚洲一区二区视频| 亚洲欧美日韩精品久久久| 欧美三级视频在线| 一区二区日韩免费看| 亚洲一区成人| 国产视频一区二区在线观看| 久久精品视频在线看| 国产日韩欧美亚洲| 欧美一区二区高清| 香蕉久久夜色精品国产| 国产精品久久久久免费a∨大胸| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 国产精品嫩草99a| 一区二区免费看| 亚洲欧美成人网| 国产精品一区二区三区久久| 欧美一级大片在线观看| 久久婷婷麻豆| 91久久线看在观草草青青| 欧美大片在线看免费观看| 亚洲精品麻豆| 亚洲视频综合在线| 欧美视频一二三区| 亚洲欧美久久久久一区二区三区| 久久乐国产精品| 亚洲精品黄色| 国产精品久久久久久av下载红粉| 午夜精品亚洲一区二区三区嫩草| 久久综合色天天久久综合图片| 亚洲国产精品欧美一二99| 欧美日韩色一区| 久久精品国产久精国产思思| 亚洲国产日本| 亚洲欧美亚洲| 亚洲成人资源网| 欧美日韩一区二区三区在线看 | 亚洲在线观看| 亚洲一区二区三区在线观看视频| 国产精品久久久久aaaa| 久久久99爱| a4yy欧美一区二区三区| 久久天天狠狠| 国产精品99久久久久久久vr| 狠狠色伊人亚洲综合网站色| 欧美精品一区二区三区很污很色的| 亚洲视频欧洲视频| 欧美大片第1页| 亚洲欧美在线网| 久久综合精品一区| 午夜在线精品| 亚洲欧洲日本在线| 国产精品国产成人国产三级| 欧美亚洲一级片| 亚洲国产精品精华液2区45| 午夜精品视频一区| 亚洲狼人精品一区二区三区| 国产日韩欧美91| 欧美午夜大胆人体| 女同性一区二区三区人了人一| 中文在线一区| 亚洲丰满在线| 久久夜色精品国产欧美乱极品| 亚洲一区二区久久| 亚洲日本va午夜在线电影| 国产一区日韩一区| 欧美性大战久久久久|