spawn python процесс перезагружает страницу в электронном виде - PullRequest
0 голосов
/ 02 апреля 2020

[Обновление]: перед перезагрузкой за долю секунды предупреждение [нарушение] 'щелчок' потребовалось xx мс, чтобы показать. (выяснено из записи экрана)

Я использую Electron с React. Для связи с основным процессом (Electron) и средством визуализации (React) я использую модули ipcRederer и ipcMain и использую ловушки для загрузки изображения на веб-страницу.

Модуль ipcMain порождает процесс python и его результат ( местоположение изображения) отправляется обратно, чтобы затем загрузить изображение, созданное сценарием python, указав местоположение

Простой поток данных: React -> Hooks -> ipcRender -> ipcMain -> spawn python process -> ip c 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

...