ReactJS 中的屏幕方向

ARK*_*AVA 6 html javascript css orientation reactjs

如何在ReactJS中获取方向类型和锁定方向?屏幕方向 API 不适用于 ReactJS,或者我只是不知道如何安装和使用它。请指导我执行上述操作。谢谢。

Yev*_*kov 2

从您的帖子中您的用例并不清楚。但是,纯 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
)
Run Code Online (Sandbox Code Playgroud)

ps虽然上面相当可行,但它可能会在短时间内变得更加全面,因为window.screen.orientation(当前的工作草案)将使其达到标准,另一个改进可能看起来很明显(监听orientationchange事件,而不是resize),但前者并不在我看来,该应用程序的桌面版本工作得非常顺利