主进程中的数组与渲染进程是不变的吗?

时间:2018-10-31 19:22:17

标签: javascript electron

说明:我了解主流程和渲染器流程位于不同的范围内,并且不会共享数据。这不是问题。问题是,如果我从Main进程中获取数据,然后尝试对其进行突变,则不会。


我遇到一种情况,当从渲染器访问电子应用程序的Main进程中的数组是不可变的。我不是Javascript英雄,所以我对此很猜疑,但我想了解发生了什么。

这是基本轮廓:

主要过程:存储对象数组

// class instance with getter/setter for a "data" property 
global.model = new Model(); 

渲染器过程:提取“模型”数据属性并对其进行更改

editorJson = remote.getGlobal('model').data;

渲染过程进行了更改,但是当我尝试设置数组项的值时,该值不会更改(通过 renderer 控制台输出进行检查)

editorJson.events[i] = activeEvent;
console.log('activeEvent',activeEvent);
console.log('editorJson.events',editorJson.events[i]);

editorJson.events[i]不反映设置的新数据

问题:主进程中的数组是否有可能是不可变的?我一直在搜索,却没有看到任何东西。

我正在解决的方法(似乎正在工作)是克隆数据,进行更改,然后将其发送回主进程,然后将其保存到磁盘:

editorJson = Object.assign({},remote.getGlobal('model').data);

// make a bunch of changes in render process then set it back on main process:

remote.getGlobal('model').data = editorJson;
// "model" writes out the changed data

顺便说一句,我这样做是因为我有一个窗口式,演示/编辑器类型的应用程序,需要共享JSON数据。每个窗口都可以对数据进行更改–因此,有必要在主流程中集中数据,并在发生更改时让其处理窗口的保存和更新。至少那是理论...

0 个答案:

没有答案