在 ReactJS 中获取视口/窗口高度
2022-08-29 23:54:31
如何在 ReactJS 中获取视口高度?在普通的JavaScript中,我使用
window.innerHeight()
但是使用ReactJS,我不确定如何获取这些信息。我的理解是
ReactDOM.findDomNode()
仅适用于创建的组件。然而,对于or元素来说,情况并非如此,它可以给我窗户的高度。document
body
如何在 ReactJS 中获取视口高度?在普通的JavaScript中,我使用
window.innerHeight()
但是使用ReactJS,我不确定如何获取这些信息。我的理解是
ReactDOM.findDomNode()
仅适用于创建的组件。然而,对于or元素来说,情况并非如此,它可以给我窗户的高度。document
body
使用 Hooks (React 16.8.0+
)
创建挂钩。useWindowDimensions
import { useState, useEffect } from 'react';
function getWindowDimensions() {
const { innerWidth: width, innerHeight: height } = window;
return {
width,
height
};
}
export default function useWindowDimensions() {
const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());
useEffect(() => {
function handleResize() {
setWindowDimensions(getWindowDimensions());
}
window.addEventListener('resize', handleResize);
return () => window.removeEventListener('resize', handleResize);
}, []);
return windowDimensions;
}
之后,您将能够在这样的组件中使用它。
const Component = () => {
const { height, width } = useWindowDimensions();
return (
<div>
width: {width} ~ height: {height}
</div>
);
}
原始答案
这在 React 中是一样的,你可以用它来获取当前视口的高度。window.innerHeight
正如你在这里看到的
这个答案与Jabran Saeed的答案类似,除了它也处理窗口大小调整。我是从这里得到的。
constructor(props) {
super(props);
this.state = { width: 0, height: 0 };
this.updateWindowDimensions = this.updateWindowDimensions.bind(this);
}
componentDidMount() {
this.updateWindowDimensions();
window.addEventListener('resize', this.updateWindowDimensions);
}
componentWillUnmount() {
window.removeEventListener('resize', this.updateWindowDimensions);
}
updateWindowDimensions() {
this.setState({ width: window.innerWidth, height: window.innerHeight });
}