[更新]: リロードする前に、数分の 1 の警告 [違反] 'クリック' ハンドラーに xx ミリ秒かかったのは showinf です。(画面収録で判明)
ReactでElectronを使用しています。メイン プロセス (Electron) およびレンダラー (React) と通信するために、ipcRederer および ipcMain モジュールを使用し、フックを使用して Web ページに画像をロードしています。
ipcMain モジュールは Python プロセスを生成し、その結果 (イメージの場所) が送り返され、場所を提供することで Python スクリプトによって作成されたイメージがロードされます。
簡単なデータフローは次のとおりです: React -> Hooks -> ipcRender -> ipcMain -> spawn python process -> ipc Main -> ipcRender -> Hooks(useState)
実行すると画像が表示されますが、すぐにWebページがリロードされます。深く掘り下げると、問題が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 メッセージからの戻り値が含まれます