嫩草影院久久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ì)www.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>

        • 亚洲日本国产| 久久久九九九九| 亚洲一区美女视频在线观看免费| 亚洲国内自拍| 亚洲国产日韩欧美在线图片| 在线播放精品| 亚洲日本理论电影| 一区二区三区久久| 小嫩嫩精品导航| 久久久久成人网| 免费日韩视频| 亚洲精品视频一区| 亚洲婷婷国产精品电影人久久| 亚洲欧美日韩在线综合| 久久久国产亚洲精品| 蜜乳av另类精品一区二区| 欧美激情第3页| 国产欧美亚洲视频| 亚洲精品乱码久久久久久蜜桃91 | 亚洲成人在线网| 91久久极品少妇xxxxⅹ软件| 一区二区三区日韩精品| 99re6热只有精品免费观看| 欧美日韩美女| 国产一区欧美| 亚洲午夜精品网| 久久久亚洲国产天美传媒修理工 | 一二三区精品| 久久久国产精品一区二区三区| 欧美波霸影院| 亚洲综合色婷婷| 欧美岛国在线观看| 国产麻豆精品在线观看| 日韩亚洲一区在线播放| 久久久青草婷婷精品综合日韩| 亚洲精品一区二区三区av| 久久精品一区二区三区不卡牛牛 | 亚洲欧洲另类国产综合| 亚洲欧美日韩视频二区| 欧美成人综合| 一区精品久久| 久久久综合网站| 亚洲手机视频| 欧美精品亚洲二区| 亚洲精品美女在线| 欧美插天视频在线播放| 欧美一区二区视频观看视频| 国产精品久久久久9999| 99伊人成综合| 亚洲破处大片| 久久蜜桃精品| 国产最新精品精品你懂的| 欧美亚洲一区三区| 亚洲视频axxx| 国产精品综合视频| 亚洲欧美国产高清| 中国成人黄色视屏| 国产精品久久网| 午夜精品久久久久久99热软件| 亚洲免费观看在线视频| 欧美精品入口| 在线亚洲伦理| 一区二区国产精品| 国产精品扒开腿爽爽爽视频 | 99视频超级精品| 亚洲经典三级| 欧美日本韩国一区二区三区| 亚洲国产专区| 亚洲日本欧美在线| 欧美激情片在线观看| 一区二区日本视频| 中文网丁香综合网| 国产精品一区二区视频| 欧美一区在线看| 久久久人成影片一区二区三区| 一区二区三区在线观看国产| 亚洲专区在线| 久久精品色图| 亚洲成人在线免费| 亚洲国产视频直播| 欧美日韩播放| 欧美一区二区三区免费视频| 亚洲欧美日韩精品一区二区| 激情综合网址| 亚洲人成网站影音先锋播放| 欧美日韩在线精品一区二区三区| 午夜激情综合网| 久久久久高清| 亚洲无限av看| 久久精品免视看| 一区二区三区导航| 久久国产黑丝| 日韩亚洲视频在线| 欧美一级片在线播放| 亚洲国产三级在线| 亚洲视频网在线直播| 狠狠狠色丁香婷婷综合激情| 亚洲韩国日本中文字幕| 国产精品自拍在线| 亚洲激情网址| 国模一区二区三区| 一区二区高清| 91久久精品国产91久久| 亚洲男人的天堂在线| 一区视频在线| 在线综合视频| 亚洲精品看片| 久久久久国产精品午夜一区| 亚洲影院在线观看| 美女999久久久精品视频| 亚洲欧美文学| 欧美日韩国产成人在线| 两个人的视频www国产精品| 欧美日韩综合不卡| 亚洲丁香婷深爱综合| 国产日韩欧美中文| 亚洲国产免费看| 国语自产精品视频在线看8查询8 | 亚洲国产三级网| 亚洲一区二区动漫| 亚洲美女性视频| 久久中文在线| 久久免费视频在线观看| 欧美先锋影音| 亚洲精品在线观| 亚洲精品影视| 欧美激情一区二区三区蜜桃视频| 欧美.www| 亚洲高清视频在线观看| 久久se精品一区精品二区| 亚洲在线免费观看| 国产精品va在线播放我和闺蜜| 亚洲国产日本| 亚洲国产婷婷| 欧美国产精品一区| 亚洲激情在线激情| 一区二区激情视频| 欧美人与禽性xxxxx杂性| 亚洲国产欧美日韩| 国产精品伊人日日| 欧美影片第一页| 国产精品亚洲欧美| 亚洲欧美日韩在线一区| 久久爱91午夜羞羞| 国产欧美精品xxxx另类| 亚洲综合三区| 久久精品国产2020观看福利| 国产亚洲激情在线| 久久成人精品电影| 免播放器亚洲一区| 亚洲激情网站| 欧美日韩精品欧美日韩精品| 夜色激情一区二区| 久久本道综合色狠狠五月| 国产在线精品成人一区二区三区| 久久av资源网| 亚洲国产欧美一区| 亚洲午夜久久久| 国产精品一区二区男女羞羞无遮挡 | 激情久久久久久久| 媚黑女一区二区| 91久久精品国产91久久性色tv | 欧美激情综合亚洲一二区| 亚洲激情精品| 亚洲欧美文学| 136国产福利精品导航网址| 免费一区视频| 亚洲美女在线观看| 欧美一区二区三区视频免费播放 | 先锋影音网一区二区| 国产一区91精品张津瑜| 欧美aaaaaaaa牛牛影院| 一区二区三区国产精品| 久久aⅴ国产紧身牛仔裤| 18成人免费观看视频| 欧美色视频日本高清在线观看| 欧美在线视频免费观看| 亚洲人www| 久久久亚洲人| 亚洲嫩草精品久久| 亚洲欧洲日本国产| 国产精品一区二区久久精品| 裸体一区二区| 欧美一级网站| 亚洲午夜在线观看| 91久久精品日日躁夜夜躁国产| 久久精品女人| 亚洲在线视频观看| 亚洲精选大片| 永久免费视频成人| 国产女主播一区二区三区| 欧美精品成人一区二区在线观看| 欧美亚洲网站| 亚洲一区视频在线观看视频| 亚洲高清视频一区二区| 久久人91精品久久久久久不卡| 亚洲欧美一区二区原创| 一区二区日韩伦理片| 亚洲乱码国产乱码精品精| 影音先锋中文字幕一区|