【问题标题】:How do I get my Data to return from my IpcMain如何让我的数据从我的 IpcMain 返回
【发布时间】:2020-08-19 17:39:01
【问题描述】:

我正在 react 中创建一个拖放操作,并使用电子发送和接收我的文件数据。我在 console.log 中收到了 senderId 和 sender。我怎样才能让数据出现?我错过了什么?

Dropzone.js 文件

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]});
});

【问题讨论】:

    标签: javascript node.js reactjs object electron


    【解决方案1】:

    您不能通过 IPC 通道发送文件等特殊对象:

    参数将使用结构化克隆算法进行序列化,就像 postMessage 一样,因此不会包含原型链。发送函数、承诺、符号、WeakMap 或 WeakSet 将引发异常。
    注意:不推荐发送非标准 JavaScript 类型(如 DOM 对象或特殊 Electron 对象),并将开始抛出异常从 Electron 9 开始的异常。

    -- https://www.electronjs.org/docs/api/web-contents#contentssendchannel-args

    您可以在渲染器进程中将文件读取为 Base64 字符串、缓冲区或其他任何内容,然后将其发送到主进程,或者如果您要选择文件,则可以在主进程中执行所有操作,例如https://www.electronjs.org/docs/api/dialog#dialogshowopendialogbrowserwindow-options?

    【讨论】:

    • 我使用 react-dropzone 是否重要,是否需要使用 filereader API?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多