Вы делаете много неправильно.Возможно, вам нужно прочитать документацию React и узнать о потоке данных (сверху вниз), состоянии и рендеринге.Вот пример того, как вы можете делать то, что вы пытаетесь сделать, используя React 16.8+ с хуками:
import React, { useState, useEffect } from "react"
const LivePage = () => {
const [fullScreen, setFullScreen] = useState(false)
useEffect(() => {
const listener = () => {
setFullScreen(Math.abs(window.orientation) === 90)
}
window.addEventListener("orientationchange", listener)
return () => {
window.removeEventListener(listener)
}
}, [setFullScreen])
return (
<div className="video">
<video src="//myvideo.mp4" className={fullScreen && "full"} />
</div>
)
}
export default LivePage
Или без использования React Hooks (например, для версий React <16.8), это фактически то же самое: </p>
import React from "react"
class LivePage extends React.PureComponent {
state = {
fullScreen: false,
}
orientationListener = () => {
this.setState({ fullScreen: Math.abs(window.orientation) === 90 })
}
componentDidMount() {
window.addEventListener("orientationchange", this.orientationListener)
}
componentWillUnmount() {
window.removeEventListener(this.orientationListener)
}
render() {
return (
<div className="video">
<video
src="//myvideo.mp4"
className={this.state.fullScreen && "full"}
/>
</div>
)
}
}
export default LivePage