1、初步尝试

我首先尝试用mutation(commit)传参。结果控制台报错:

[Vuex Electron] Please, don't use direct commit's, 
use dispatch instead of this.

好好好。那我再用action传参试试。虽然控制台没报错,但却一直无法赋值!

2、查找资料

我找到一个解决方法:

注释掉store目录下index.jscreateSharedMutations插件。

经测试确实可以!但不知道为什么。

3、深入研讨

经过进一步的查阅。我了解到,刚才传值失败,是因为electron-vue脚手架引入了vuex-electron介个插件。

点击查看vuex-electron的文档

文档中明确注明了:

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'

意思是:

如果你启用了这个插件,需要在主进程导出(export )store的实例。

于是我在主进程中加上了这一句:

import '../renderer/store'

再次运行,赋值成功!

4、反思

vuex-electron介个插件,用于多进程间共享Vuex Store的状态。
如果没有多进程交互的需求,完全可以不引入这个插件。

再进一步思考。
之前我都是图方便,直接用脚手架。
但它们有可能加载不必要的插件。(甚至会导致兼容问题)
需要注意~

本文固定链接: http://www.js-code.com/vue-js/vue-js_16325.html