在 ReactJS 中获取视口/窗口高度

新手上路,请多包涵

如何在 ReactJS 中获取视口高度?在我使用的普通 JavaScript 中

window.innerHeight()

但是使用 ReactJS,我不确定如何获取这些信息。我的理解是

ReactDOM.findDomNode()

仅适用于创建的组件。但是,对于 documentbody 元素,情况并非如此,这可能会给我窗口的高度。

原文由 Jabran Saeed 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.1k
2 个回答
class AppComponent extends React.Component {

 constructor(props) {
 super(props);
 this.state = {height: props.height};
 }

 componentWillMount(){
 this.setState({height: window.innerHeight + 'px'});
 }

 render() {
 // render your component...
 }
 }

设置道具

AppComponent.propTypes = {
 height:React.PropTypes.string
 };

 AppComponent.defaultProps = {
 height:'500px'
 };

视口高度现在可用作渲染模板中的 {this.state.height}

原文由 Jabran Saeed 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用钩子(反应 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 来获取当前视口的高度。

正如你 在这里 看到的

原文由 QoP 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题