【发布时间】:2021-05-06 14:01:59
【问题描述】:
我正在使用 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;
【问题讨论】:
标签: javascript reactjs electron