Javascript 电子与化学反应;用电子遥控器检测反应中的电子api变化
我试图在电子窗口最大化时动态更改div标记的样式。在下面的代码中,我希望div class=resizer在电子窗口最大化时显示:noneJavascript 电子与化学反应;用电子遥控器检测反应中的电子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"
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?我是说像遥控器?