我正在使用 react 制作电子应用程序,并且我使用远程模块完成了标题栏控件,但在控制台中,我收到警告说 remote
模块已被弃用。我想更改我的代码以使用 ipcMain
和 ipcRenderer
而不是远程,但我无法让它工作。
这是我的代码,它在 100% atm 下工作,但带有远程模块。有人可以展示至少一个函数,例如 app.minimize()
如何使用 ipcMain
和 ipcRenderer
?
import { useState, useEffect } from "react";
import { remote } from "electron";
import {
VscChromeMinimize,
VscChromeMaximize,
VscChromeRestore,
VscChromeClose,
} from "react-icons/vsc";
const TitlebarControls = ({ minimize, maximize, close }) => {
const app = remote.getCurrentWindow();
const [maximizeIcon, setMaximizeIcon] = useState(
app.isMaximized() ? <VscChromeRestore /> : <VscChromeMaximize />
);
useEffect(() => {
app.on("maximize", () => setMaximizeIcon(<VscChromeRestore />));
app.on("unmaximize", () => setMaximizeIcon(<VscChromeMaximize />));
}, [app]);
return (
<ul className="titlebar-controls">
{minimize && (
<li className="minimize" onClick={() => app.minimize()}>
<VscChromeMinimize />
</li>
)}
{maximize && (
<li
className="maximize"
onClick={() =>
!app.isMaximized() ? app.maximize() : app.unmaximize()
}
>
{maximizeIcon}
</li>
)}
{close && (
<li className="close" onClick={() => app.close()}>
<VscChromeClose />
</li>
)}
</ul>
);
};
export default TitlebarControls;
答案 0 :(得分:1)
remote
模块将在 Electron 14 中移除,但如果您只关心弃用,则可以使用 @electron/remote
模块。 docs 给出了以下使用方法:
// Deprecated way
// const { BrowserWindow } = require('electron').remote
// Replace with:
const { BrowserWindow } = require('@electron/remote')
// In the main process:
require('@electron/remote/main').initialize()
如果你想让 ipc 方法达到同样的效果,请执行以下操作:
在 renderer.js 中:
const { ipcRenderer } = require('electron')
//to minimize
ipcRenderer.send('minimize', data);//data contains any extra info you may need to send
在 main.js 中:
const { ipcMain, app } = require('electron')
ipcMain.on('minimize', (event, data) => {
//Minimize logic
})