开门直接放链接吧 https://github.com/shadeofgod/electron-shared-state
electron 那个 ipc 蛋疼的一批,有人做了个 electron-redux 不过太麻烦了,不是很好用,很多时候需要共享的只是一小块状态,完全没必要上 redux。搜了下也没找到啥好方案,正好最近写代码时间比较充裕干脆自己撸了个轮子。
代码很简单,也就 100 来行 ts,主要是基于 immer 封装了一下,直接修改一个对象,其他的进程也会触发修改。因为只会通过 ipc 发送 patch 而不是整个完整对象,所以性能还是可以的。
API 超级简单,就一个函数,输入是需要共享的状态,输出是个 object,上面三个方法,getState/setState/subscribe, 没了。
// shared
export const initialState = 0;
// renderer
const sharedStore = createSharedStore(initialState);
sharedStore.subscribe(state => {
console.log(state);
});
setTimeout(() => {
sharedStore.setState(state => {
state = state + 1;
});
}, 2000);
// main
const sharedStore = createSharedStore(initialState);
sharedStore.subscribe(state => {
console.log(state);
});
// both main and renderer will print the state after two seconds.
欢迎 pr/issue/star
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.