如何在ReactJS中获取设备方向类型并锁定屏幕方向?
屏幕方向API无法在ReactJS中使用,或者我不知道如何安装和使用它。请指导我如何做到上述操作。谢谢。
Window.matchMedia()
方法),再加上一点CSS (针对 orientation
的媒体查询) 和窗口调整大小的事件监听器,可以让您获取窗口方向并将其存储在应用程序状态中。import React, { useState, useEffect } from 'react'
import { render } from 'react-dom'
const rootNode = document.getElementById('root')
const App = () => {
const isLandscape = () => window.matchMedia('(orientation:landscape)').matches,
[orientation, setOrientation] = useState(isLandscape() ? 'landscape' : 'portrait'),
onWindowResize = () => {
clearTimeout(window.resizeLag)
window.resizeLag = setTimeout(() => {
delete window.resizeLag
setOrientation(isLandscape() ? 'landscape' : 'portrait')
}, 200)
}
useEffect(() => (
onWindowResize(),
window.addEventListener('resize', onWindowResize),
() => window.removeEventListener('resize', onWindowResize)
),[])
return (
<div>{orientation}</div>
)
}
render (
<App />,
rootNode
)
p.s. 尽管上述内容相当可行,但随着 window.screen.orientation
(目前为工作草案)被纳入标准,它可能会变得更加全面。另一个改进似乎很显然(监听 orientationchange
事件,而不是 resize
),但我觉得前者在桌面应用程序版本方面并没有那么流畅。
window.screen.orientation
已被弃用,不再推荐使用。请尝试使用宽度/高度比率,例如 isLandscape = window.innerWidth / window.innerHeight > 1;
更正:window.orientation
已被弃用。我的错误。 - ed1nh0