当前位置: 首页 > 面试题库 >

如何与电子反应

秋光熙
2023-03-14
问题内容

使用react和electronic创建桌面应用程序。我想从react组件中调用main.js电子方法。

import React, { useState, useEffect, useRef } from 'react';
import './diagnosis.css';
const electron = window.require('electron');// if i use require('electron') throws error
function Diagnosis(props) {
    const [data, setData] = useState({ hits: [] });
    useEffect(() => {
        getExeFiles();
    });
    const getExeFiles = () => {
        electron.ipcRenderer.send('get-exe'); 
    }
    return(<></>)
}

main.js

electron.ipcMain.on('get-exe', () => {
    console.log('reaciovg');
    mainWindow.webContents.send('return-exe', '');
});

如何克服这个问题?


问题答案:

在您的Renderer.js

const { ipcRenderer } = require('electron');

async function runCommand(cmd) {
  const res = await ipcRenderer.sendSync('runCommand', cmd);
  return res;
}

在您的main.js

// Listen event through runCommand channel
// And return the result to Renderer.
ipcMain.on('runCommand', async (event, arg) => {
  event.returnValue = await runCommand(arg);
});

这是在主进程与渲染进程之间进行通信的最简单方法。

但是我认为您将使用以下方法将主过程的结果发送到渲染器 mainWindow.webContents.send('return-exe', '');

因此,这意味着您正在通过return-exeIPC通道将结果从main发送到渲染器。并且您应该在渲染器上监听此通道的事件。像这样

ipcRenderer.on('retrun-exe', (event, arg) => {
    ...
});

您可以在生命周期功能中添加此侦听器。我曾经将其添加到componentDidMount()您的情况下,但请您将此添加到您的useEffect()



 类似资料:
  • 问题内容: 我目前正在使用Electron和MongoDB构建一个桌面应用程序。此应用程序的目的是在应用程序的本地范围内(而不是在服务器上)收集和存储各种客户的信息。我已经使用node.js对MongoDB进行了一些研究;但是我还没有找到在Electron中使用它的方法。 问题答案: 这是用于MongoDB管理的电子应用程序,您可以检查代码作为如何使用mongodb和electronic的示例。

  • 我在试图把这两件事结合在一起的时候遇到了一些问题。 让我给你一些上下文:我正在尝试构建一个基于我在react中开发的web应用程序的桌面应用程序,它完全可以运行,react的构建过程没有任何错误或问题。问题来了,当我试图胶合电子+一个反应建成的项目。 我的结构如下: /dist /node_module /react-mobx-router /生成 /静态 /js main.05ef4655.js

  • 问题内容: 在最新版本(v0.31.0)中,电子附带了静态链接的FFMpeg库(不是命令行工具,请参见#2588) 我知道很多用于ffmpeg的nodejs模块,但是它们看起来都像是命令行工具的api,那么理想情况下我该如何访问与电子捆绑在一起的ffmpeg库并编码流? 问题答案: 当前这是不可能的,因为没有针对Node.js的不错的库。意思是,只有这样抽象了CLI。但是,可以将其编译和链接为节点

  • 我正在尝试创建一个flutter应用程序,在创建一个用户的电子邮件/密码后,他们被保存在firebase,然后用户输入他的电话号码,发送OTP和用户在验证后登录。我的问题是,当这两个步骤都完成时,firebase正在创建两个单独的帐户,一个是电子邮件帐户,另一个是电话帐户。请告诉我如何创建一个既有电子邮件/密码又有电话的单一帐户。我还想同时使用电子邮件/密码或电话登录。或任何其他方式创建具有电子邮

  • 我需要将keytar与electron结合使用,但我使用的是Angular和Typescript。我已在main.ts中导入模块

  • 我正在尝试用python制作一个电报回声机器人。我在heroku上托管我的python。 起初,我只是对python请求使用了电报本地API方法,然后我使用了一个python-telegram-bot库。 我能够让常规的getUpdate方法(使用长轮询——即heroku定期向您的电报机器人发出请求以获取更新)工作,但webhook不能。 我认为问题是heroku不会允许进入港口 有谁知道我该怎么