如何在 ReactJS 中获取方向类型和锁定方向?Screen Orientation API 不适用于 ReactJS,或者我只是不知道如何安装和使用它。请指导我做上面的事情。谢谢。
ReactJS 中的屏幕方向
IT技术
javascript
html
css
reactjs
orientation
2021-05-26 07:06:53
1个回答
您的用例在您的帖子中并不清楚。但是,纯 JavaScript(Window.matchMedia()方法)以及一些 CSS(媒体查询orientation)和用于调整窗口大小的事件侦听器,可以让您获取窗口方向并将其存储在应用程序状态中。
下面的代码演示了这个概念(由于 stacksnippets 的限制,没有实时演示,所以你可以在stackblitz 上尝试一下):
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
)
ps虽然上面是非常可行的,但它可能会在短时间内变得更加全面,因为window.screen.orientation(目前的工作草案)将使其达到标准,另外一个改进似乎很明显(监听orientationchange事件,而不是resize),但前者没有在我看来,桌面版本的应用程序工作得如此顺利