Electron-store-vuex-sync
自动同步electron-store
和vuex
使用方法
在background.js中(node进程)
const { ipcMain } = require('electron')
const Store = require('electron-store');
const { injectStore } = require('electron-store-vuex-sync')
const store = new Store();
injectStore(ipcMain, store)
在创建vuex的地方
import Vuex from 'vuex'
import { getVuexStoreConfig } from 'electron-store-vuex-sync'
import { ipcRenderer } from 'electron'
const store = new Vuex.Store(getVuexStoreConfig(ipcRenderer))
return store
如果需要可以update
如果需要vuex可以同步回store
import Vuex from 'vuex'
import { getVuexStoreConfig } from 'electron-store-vuex-sync'
import { ipcRenderer } from 'electron'
const schema = {
a: {
type: 'array'
}
}
const store = new Vuex.Store(getVuexStoreConfig(ipcRenderer, schema))
return store
这样,会根据你schema的key,自动添加mutation
,名字类似于set:key名
初始化的vuex state和store同步
默认情况下,state根据schema推导,但是可以通过传入第四个参数defaultStore,让state中每个属性就为defaultStore对应的值
默认同步会在加载成功后通过对应事件同步
import Vuex from 'vuex'
import { getVuexStoreConfig } from 'electron-store-vuex-sync'
import { ipcRenderer } from 'electron'
import store from '../store'
const schema = {
a: {
type: 'array'
}
}
const store = new Vuex.Store(getVuexStoreConfig(ipcRenderer, schema, null, store))
return store
这样,会根据你schema的key,自动添加mutation
,名字类似于set:key名
参数
injectStore
- ipcMain
electron
的ipcMain
用来注入监听事件 - store
electron-store
创建的store
- [storeName] 当前这个
store
的名字需要不同页面同步不同store
的时候需要,可选
返回传入的store
getVuexStoreConfig
- ipcRenderer
electron
的ipcRenderer
用来注入监听事件 - [schema]
electron-store
的schema
可以根据这个自动初始化,省去手动的问题 - [storeName] 当前这个
store
的名字需要不同页面同步不同store
的时候需要,可选
其他的事
-
如果使用schema
来初始化的话,vuex
的mutation
为set:schema的key
-
只会生成对应的vuex
配置,像是state
,action
这些你可以通过解构等方法把自己的方法注入进去
-
因为electron-store
默认名字为config
,所以vuex
用来初始化和同步的事件前缀也默认为config:
-
background
的注入请放在最顶上