Задача Vuex с электронной доставкой - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть электронное приложение с vuex.Магазин настроен для всего приложения с модулями, мой тестовый модуль Browser.js:

export default {
  namespaced: true,
  state: {
    currentPath: 'notSet'
  },
  mutations: {
    setPath (state) {
      state.currentPath = 'xxxx'
    }
  },
  actions: {
    updateCurrentPath ({ commit }) {
      console.log('COMMIT')
      commit('setPath')
    }
  },
  getters: {
    getCurrentPath (state) {
      return state.currentPath
    }
  }
}

Теперь внутри компонента я пытаюсь отправить действие обновления безуспешно.Получатели работают нормально:

mounted () {
  console.log('mounted')
  console.log('# GET FROM STORE:', this.$store.getters['Browser/getCurrentPath'])
  console.log('# DISPATCH:', this.$store.dispatch('Browser/updateCurrentPath'))
  console.log('# GET FROM STORE 2:', this.$store.getters['Browser/getCurrentPath'])
},

Консоль:

mounted
Browser.vue?31a5:62 # GET FROM STORE: notSet
Browser.vue?31a5:63 # DISPATCH: undefined
Browser.vue?31a5:64 # GET FROM STORE 2: notSet

Действие существует, когда я регистрирую это. Переменная $ store я вижу:

Store {_committing: false, _actions: {…}, _actionSubscribers: Array(0), _mutations: {…}, _wrappedGetters: {…}, …}
_actions:
Browser/updateCurrentPath

Так какЯ должен отправить действие?

Ответы [ 3 ]

0 голосов
/ 03 января 2019

Если вы включили плагин createSharedMutations (), вам нужно создать экземпляр хранилища в основном процессе.Для этого просто добавьте эту строку в ваш основной процесс (например, src / main.js):

import './path/to/your/store' ссылка на официальный плагин, используемый Electron-Vue, который вызывает эту проблему

0 голосов
/ 24 февраля 2019

Если вы используете шаблон Vue-Electron с плагином Vuex-Electron, вам нужно добавить следующую строку в ваш файл src / main / index.js

import store from '../renderer/store'
0 голосов
/ 13 декабря 2018

Проблема была с электронным плагином.Я использую Electron-Vue Repo от GitHub, и там используется плагин:

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

Плагин createSharedMutations был проблемой.После комментирования все работает нормально:

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