Javascript 电子与化学反应;用电子遥控器检测反应中的电子api变化

Javascript 电子与化学反应;用电子遥控器检测反应中的电子api变化,javascript,reactjs,electron,Javascript,Reactjs,Electron,我试图在电子窗口最大化时动态更改div标记的样式。在下面的代码中,我希望div class=resizer在电子窗口最大化时显示:none const remote = window.require('electron').remote const TitlebarDev = () => { const window = remote.getCurrentWindow() return ( <div className="TitlebarDev"

我试图在电子窗口最大化时动态更改div标记的样式。在下面的代码中,我希望div class=resizer在电子窗口最大化时显示:none

const remote = window.require('electron').remote

const TitlebarDev = () => {

    const window = remote.getCurrentWindow()

    return (
        <div className="TitlebarDev">
            <div className="Title-BarDev">
                <div className="TitlebarDev-drag-region"></div>
                <div className="Title-BarDev__section-icon">
                </div>
                <div className="Title-BarDev__section-menubar">
                </div>
                <div className="Title-BarDev__section-center">
                </div>
                <div className="Title-BarDev__section-windows-control">
                </div>
                <div
                    // Here is the div I need to change when the window is maximized; I just have a placeholder ternary function on it for concept.
                    style={true ? { display: 'none' } : {}}
                    className="resizer">
                </div>
            </div>
        </div >
    )
}

export default TitlebarDev
在electron api中,对window变量有一个.isMaximized()函数调用。我需要电子遥控器:const remote=window.require('electron').remote。然后输入remote.getCurrentWindow()

问题是,如果窗口最大化,我就不能找到一种方法来触发一种倾听的方式?我可以使用useEffect()react钩子,每隔1秒左右检查window.isMaximized(),但似乎不是很优化,而且浪费资源

有没有更好的方法来检查这个?我需要一种方法来“观察”窗口何时变得最大化

const remote = window.require('electron').remote

const TitlebarDev = () => {

    const window = remote.getCurrentWindow()

    return (
        <div className="TitlebarDev">
            <div className="Title-BarDev">
                <div className="TitlebarDev-drag-region"></div>
                <div className="Title-BarDev__section-icon">
                </div>
                <div className="Title-BarDev__section-menubar">
                </div>
                <div className="Title-BarDev__section-center">
                </div>
                <div className="Title-BarDev__section-windows-control">
                </div>
                <div
                    // Here is the div I need to change when the window is maximized; I just have a placeholder ternary function on it for concept.
                    style={true ? { display: 'none' } : {}}
                    className="resizer">
                </div>
            </div>
        </div >
    )
}

export default TitlebarDev
const remote=window.require('electron').remote
常数TitlebarDev=()=>{
const window=remote.getCurrentWindow()
返回(
)
}
导出默认标题栏

经过一段时间的研究,我解决了这个问题。 使用BrowserWindow(win.)对象上的内置事件侦听器解决了该问题

代码中的以下内容;远程设备与window.require('electron').remote一起导入。然后我将CurrentWindow()对象保存在一个名为“window”的变量中。在该窗口变量上,可以调用.On方法,该方法可以将预定义的事件侦听器内置到electron中。使用window.on('maximize',()=>{})/这是'maximize'事件侦听器/每当窗口最大化时,都会运行回调函数。在BrowserWindow下的官方API文档中,有一个完整的事件侦听器列表

希望这可以帮助其他人在未来

import React, { useState } from 'react';
const remote = window.require('electron').remote

const TitlebarDev = () => {

    // React state
    const [isMaximized, setIsMaximized] = useState();

    // Electron currentwindow call with remote
    const window = remote.getCurrentWindow()

    // gets current state if maximized in real time
    window.on('maximize', () => {
        setIsMaximized(true)
    })

    // gets current state if unmaximzed in real time
    window.on('unmaximize', () => {
        setIsMaximized(false)
    })

    return (
        <div className="TitlebarDev">
            <div className="Title-BarDev">
                <div className="TitlebarDev-drag-region"></div>
                <div className="Title-BarDev__section-icon">
                </div>
                <div className="Title-BarDev__section-menubar">
                </div>
                <div className="Title-BarDev__section-center">
                </div>
                <div className="Title-BarDev__section-windows-control">
                </div>
                <div
                    style={isMaximized ? { display: 'none' } : {}}
                    className="resizer">
                </div>
            </div>
        </div >
    )
}

export default TitlebarDev
import React,{useState}来自“React”;
const remote=window.require('electron').remote
常数TitlebarDev=()=>{
//反应状态
常量[isMaximized,setIsMaximized]=useState();
//电子窗口远程调用
const window=remote.getCurrentWindow()
//如果实时最大化,则获取当前状态
window.on('最大化',()=>{
setIsMaximized(真)
})
//如果未实时最大化,则获取当前状态
window.on('unmaxize',()=>{
setIsMaximized(假)
})
返回(
)
}
导出默认标题栏

编辑:如果有人发现这个,不要再使用“远程”!!现在使用IPC,因为remote速度慢且陈旧。IPC要快得多,他们为它编写异步/等待语法。

您好,您如何使用IPC?我是说像遥控器?