1

[更新]: リロードする前に、数分の 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 メッセージからの戻り値が含まれます

4

0 に答える 0