Javascript 如何从IpcMain返回数据
我正在react中创建一个拖放,并使用electron发送和接收我的文件数据。我在console.log中收到一个senderId和sender。如何才能使数据显示出来?我错过了什么 Dropzone.js文件Javascript 如何从IpcMain返回数据,javascript,node.js,reactjs,object,electron,Javascript,Node.js,Reactjs,Object,Electron,我正在react中创建一个拖放,并使用electron发送和接收我的文件数据。我在console.log中收到一个senderId和sender。如何才能使数据显示出来?我错过了什么 Dropzone.js文件 const [fileNames, setFileNames] = useState([]); const handleDrop = useCallback(acceptedFiles => { setFileNames(_.map(acceptedFiles, ({ nam
const [fileNames, setFileNames] = useState([]);
const handleDrop = useCallback(acceptedFiles => {
setFileNames(_.map(acceptedFiles, ({ name, type, path, size, lastModified,
lastModifiedDate }) => {
return { name, type, path, size, lastModified, lastModifiedDate };
}))
let formData = new FormData();
formData.append('uploadedFiles', fileNames);
}, [fileNames]);
useEffect(() => {
ipcRenderer.send(FETCH_AUDIO_FILES, fileNames);
}, [fileNames]);
useEffect(() => {
const handler = (filesWithData) => {
_.map(filesWithData, (event, data) => {
console.log(data);
})
};
ipcRenderer.on(METADATA_COMPLETED, handler);
return () => ipcRenderer.removeListener(METADATA_COMPLETED, handler);
});
Index.js文件
ipcMain.on(FETCH_AUDIO_FILES, (event, files) => {
const promises = _.map(files, (file) => {
return new Promise((resolve, reject) => {
NodeID3.read(file.path, (err, tags) => {
resolve({
...files,
...tags
})
})
})
});
Promise.all(promises).then(results => {
event.sender.send(METADATA_COMPLETED, results);
[![enter image description here][1]][1]});
});
无法通过IPC通道发送特殊对象,如文件: 参数将使用结构化克隆算法序列化,就像postMessage一样,所以原型链将不包括在内。发送函数、承诺、符号、弱映射或弱集将引发异常。
注意:不推荐发送非标准JavaScript类型,如DOM对象或特殊Electron对象,并将开始抛出以Electron 9开头的异常 --
您可以在渲染器进程中将文件作为Base64字符串、缓冲区或任何内容读取,然后将其发送到主进程,或者如果您希望拾取文件,可以在主进程中使用,例如?使用react dropzone是否重要,是否需要使用filereader API?