在 Electron 中使用 ipc 从渲染器设置全局变量

2023-11-25

渲染器.js

ipcRenderer.sendSync('setGlobal', 'globalVarName').varInner.varInner2 = 'result';

main.js

global.globalVarName = {
  varInner: {
    varInner2: ''
  },
  iWontChange: 'hi'
};

ipcMain.on('setGlobal', (event, arg) => {
  console.log(arg) // should print "result"
  // what goes here?
})

console.log(varInner2) // should print "result"

这样的事情可能吗,即设置varInner2 of globalVarName以这种方式?其次,有没有一种方法可以优化它,这样我们就不必为每个全局变量重写这个过程(即使用动态变量名来做到这一点)?

我很欣赏任何想法或解决方案,很抱歉,如果这是一个常识性问题。


使用IPC设置全局值。

Using getGlobal当您只对读取全局变量的值感兴趣时,效果很好。但是,我发现尝试使用分配或更改其值getGlobal有问题。

就我而言,我发现主进程上的全局变量实际上没有改变。具体来说,在开发中刷新 Electron 窗口时,全局变量被设置回原来的值。这使得恢复开发状态成为一个问题。

不确定这是否也发生在生产中,但我想它会发生,因此启动依赖于全局变量的最新值的新流程将是有问题的。

相反,我最终使用了更详细的方法ipcMain and ipcRenderer.

main.js

const { ipcMain } = require( "electron" );

ipcMain.on( "setMyGlobalVariable", ( event, myGlobalVariableValue ) => {
  global.myGlobalVariable = myGlobalVariableValue;
} );

渲染器.js

const { ipcRenderer, remote } = require( "electron" );

// Set MyGlobalVariable.
ipcRenderer.send( "setMyGlobalVariable", "Hi There!" );

// Read MyGlobalVariable.
remote.getGlobal( "MyGlobalVariable" ); // => "Hi There!"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Electron 中使用 ipc 从渲染器设置全局变量 的相关文章

随机推荐