Реагировать app.js вызывается несколько раз, когда мы передаем событие из средства визуализации в основное приложение в electron react

#reactjs #electron

#реагирует на #электрон

Вопрос:

Я пытаюсь создать приложение Electron React, которое принимает изображения и анализирует их через API, а также создает копию изображения, выбранного во вложенной папке внутри приложения.

В прикрепленном изображении открывается диалоговое окно реакции, в котором отображаются полные сведения о папке, выбранной для копирования изображений, и пользователь может выбрать, какие изображения копировать.

введите описание изображения здесь

После нажатия на кнопку «Получить» я передаю событие основному процессу ( ipcRenderer.send("copyFile") ) и перемещаю пользователя по следующему маршруту, на котором отображается индикатор выполнения скопированных файлов. Когда я передаю это событие основному процессу ( electron.js ) app.js , он вызывается снова, и содержимое загружается 2 раза, но если я удаляю событие из кнопки «Извлечь», содержимое вызывается только один раз (что должно быть ожидаемым поведением приложения). Мне нужно передать это событие нажатием кнопки «Получить», чтобы скопировать изображения.

деталь визуализатора ( FileDialog.jsx )

 const retreivePhotos = () =gt; {  let obj = {  path: props.path,  fileData: finalDate,  };   let srcPath;  let count = 0;  let fileToBeCopied = [];  fs.readdirSync(props.path).forEach((file) =gt; {  const stats = fs.statSync(`${props.path}/${file}`);  const formattedDate = moment(stats.birthtime).format("LL");  if (finalDate.includes(formattedDate)) {  fileToBeCopied.push({ file: file, isSelected: false, base64: "" });  }  });  fileCopied = 0;  console.log(fileToBeCopied);  count = fileToBeCopied.length;  fileToBeCopied.forEach((item) =gt; {  srcPath = `${props.path}/${item.file}`;  fileCopied  ;  let copyObj = {  srcPath: srcPath,  file: item.file,  };  ipcRenderer.send("copyFile", copyObj);  value.push(Math.floor((fileCopied / fileToBeCopied.length) * 100));  });  props.closeDialog();  history.push({  pathname: "/progress",  state: { detail: value },  }); };  

main part ( electron.js )

 ipcMain.on("copyFile", (event, args) =gt; {  fs.copyFile(args.srcPath, (paths.join(__dirname, `InProcess/${args.file}`)), (err) =gt; {  if (err) {  console.log(err)  }  }) })  

In the attached image check the console app.js gets logged again after logging the array.

введите описание изображения здесь