首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在react和electron之间进行通信

如何在react和electron之间进行通信
EN

Stack Overflow用户
提问于 2020-01-10 19:47:35
回答 1查看 6.2K关注 0票数 4

使用react和electron创建桌面应用程序我想从react component.In angular调用电子的main.js中的方法有一个npm包。

代码语言:javascript
复制
import React, { useState, useEffect, useRef } from 'react';
import './diagnosis.css';
const electron = window.require('electron');// if i use require('electron') throws error
function Diagnosis(props) {
    const [data, setData] = useState({ hits: [] });
    useEffect(() => {
        getExeFiles();
    });
    const getExeFiles = () => {
        electron.ipcRenderer.send('get-exe'); 
    }
    return(<></>)
}

main.js

代码语言:javascript
复制
electron.ipcMain.on('get-exe', () => {
    console.log('reaciovg');
    mainWindow.webContents.send('return-exe', '');
});

如何克服这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-10 19:56:52

在你的Renderer.js

代码语言:javascript
复制
const { ipcRenderer } = require('electron');

async function runCommand(cmd) {
  const res = await ipcRenderer.sendSync('runCommand', cmd);
  return res;
}

At you main.js

代码语言:javascript
复制
// Listen event through runCommand channel
// And return the result to Renderer.
ipcMain.on('runCommand', async (event, arg) => {
  event.returnValue = await runCommand(arg);
});

这是在主进程和渲染器进程之间进行通信的最简单方式。

但我认为您将使用mainWindow.webContents.send('return-exe', '');将主进程的结果发送到渲染器

因此,这意味着您将通过return-exe IPC通道将结果从主渲染程序发送到渲染器。你应该在你的渲染器上监听来自这个通道的事件。像这样

代码语言:javascript
复制
ipcRenderer.on('retrun-exe', (event, arg) => {
    ...
});

您可以在生命周期函数中添加此侦听器。我习惯于将其添加到componentDidMount(),但在您的情况下,请将其添加到您的useEffect()

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59681069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档