1

[更新]:在重新加载之前,有几分之一秒的警告 [违规] 'click' 处理程序花了 xx ms 是 showinf。(从录屏中得知)

我正在将 Electron 与 React 一起使用。为了与主进程(电子)和渲染器(反应)进行通信,我使用 ipcRederer 和 ipcMain 模块并使用钩子在网页上加载图像。

ipcMain 模块生成一个 python 进程,并将其结果(图像位置)发送回该进程,然后通过提供位置来加载由 python 脚本创建的图像

简单的数据流是:React -> Hooks -> ipcRender -> ipcMain -> spawn python process -> ipc Main -> ipcRender -> Hooks(useState)

当我执行它时,它会显示图像但立即重新加载网页。深入我发现问题是产生了python进程。那就是重新加载页面。

main.js(电子):

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

ipcMain.on('synchronous-message', (event, arg) => {

  //.................Code to run a Python script...............
  var python = require('child_process').spawn('python', ['./public/test.py']);
  python.stdout.on('data',function(data){

  //send the output of python to React
  event.returnValue = (data.toString('utf8'));

  });
 //.................................

})

app.js(反应):

const { ipcRenderer } = window.require('electron');

function Home(){
    const [graph, setGraph] = useState("");
    function test(){
        setGraph(ipcRenderer.sendSync('synchronous-message', 0));
      }
    return (<div className="Home">
                <div onClick={test}>CLick Me</div>
                <div id="graph">
                    <img src={graph} />
                </div>
    </div>)
}

图变量包含来自 ipcMain 消息的返回值

4

0 回答 0