该post解释了如何使用mainWindow.webContents.send
function来将数据"提交表单"从电子发送到使用.html
和JavaScript绘制的页面"内部"。
问题是:这在React中无法工作。我的应用甚至无法将ipcRenderer
或electron
识别为app.tsx
(主根组件)内部的东西。
https://www.electronjs.org/docs/latest/api/web-contents#contentssendchannel-args
服务器端:
const mainWindow = createWindow('main', {
width: 1920,
height: 1080,
minWidth: 1366,
minHeight: 768,
webPreferences: {
nodeIntegration: true
}
})
if (isProd) {
await mainWindow.loadURL('app://./home.html')
} else {
const port = process.argv[2]
await mainWindow.loadURL(`http://localhost:${port}/home`)
mainWindow.webContents.openDevTools()
}
mainWindow.webContents.on('did-finish-load', () => {
mainWindow.webContents.send('submitted-form', "hello")
})
app.tsx:
// error since electron is not available within app.tsx
// electron requires 'fs' modules which client-side doesn't have
const { ipcRenderer } = require("electron")
class _app extends React.Component<any, any> {
constructor(props: any) {
super(props)
}
componentDidMount() {
ipcRenderer.on("submitted-form", function (event, data) {
console.log("received data", data)
})
}
}
1条答案
按热度按时间wmomyfyw1#
以防你没能挺过来。
我在主渲染器和渲染器之间传递信息的方式如下:
对于main.js(主电子过程)
在预加载文件中,您应该会收到如下所示的文件:
在组件的末尾,您希望呈现接收信息所需的信息,如下所示: