【发布时间】:2022-01-27 20:53:38
【问题描述】:
我正在尝试创建一个简单的应用程序,该应用程序在单击按钮时进入全屏状态并在另一个按钮上离开全屏状态。
虽然我已经弄清楚了,但当我按 ESC 离开全屏时,我无法更新状态。
import { useState } from "react"
export default function Home() {
const [isFullscreen, setFullscreen] = useState(false)
const makeFullscreen = () => {
setFullscreen(true)
document.documentElement.requestFullscreen()
}
const closeFullscreen = () => {
setFullscreen(false)
document.exitFullscreen()
}
console.log(isFullscreen)
return (
<div
className={`flex flex-col items-center justify-center w-full h-screen ${
isFullscreen ? "bg-black" : ""
}`}
>
<div
className={`w-5/6 space-y-6 text-center wrapper ${
isFullscreen ? "hidden" : "visible"
}`}
>
<button
onClick={makeFullscreen}
className={`btn btn-primary ${!isFullscreen ? "visible" : "hidden"}`}
>
START TEST
</button>
</div>
<button
onClick={closeFullscreen}
className={`btn btn-accent ${isFullscreen ? "visible" : "hidden"}`}
>
STOP TEST
</button>
</div>
)
}
我使用了一些我通过 Google 找到的东西来玩弄它,但它们只有在它不是全屏模式时才有效。
如果能解决这个问题会很棒。
奖励:进入/退出全屏的更好方法 :)
【问题讨论】:
-
您是否尝试过在初始渲染时创建击键侦听器? This post 可能有用。唯一的区别是对于您的功能组件,您将编写一个带有空依赖数组的
useEffect()实例,该数组声明侦听器并返回一个单独的匿名函数来删除该侦听器。 -
您能否详细说明在这种特殊情况下您将如何做到这一点?
标签: reactjs fullscreen