#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.