当前位置:首页 > React

react如何获取窗口高度

2026-03-10 23:26:59React

获取窗口高度的方法

在React中获取窗口高度可以通过监听window对象的resize事件并结合useStateuseEffect钩子实现。以下是具体实现方式:

import React, { useState, useEffect } from 'react';

const WindowHeight = () => {
  const [windowHeight, setWindowHeight] = useState(window.innerHeight);

  useEffect(() => {
    const handleResize = () => {
      setWindowHeight(window.innerHeight);
    };

    window.addEventListener('resize', handleResize);
    return () => {
      window.removeEventListener('resize', handleResize);
    };
  }, []);

  return <div>当前窗口高度:{windowHeight}px</div>;
};

export default WindowHeight;

自定义Hook封装

为了复用逻辑,可以将获取窗口高度的功能封装成自定义Hook:

react如何获取窗口高度

import { useState, useEffect } from 'react';

function useWindowHeight() {
  const [height, setHeight] = useState(window.innerHeight);

  useEffect(() => {
    const handleResize = () => setHeight(window.innerHeight);
    window.addEventListener('resize', handleResize);
    return () => window.removeEventListener('resize', handleResize);
  }, []);

  return height;
}

export default useWindowHeight;

使用时直接在组件中调用:

react如何获取窗口高度

const height = useWindowHeight();

注意事项

window.innerHeight返回的是视口高度(包含滚动条但不包含浏览器工具栏)。如果需要获取文档总高度,可以使用document.documentElement.scrollHeight

在服务器端渲染(SSR)场景下,直接访问window对象会导致错误,需通过typeof window !== 'undefined'进行判断:

const [windowHeight, setWindowHeight] = useState(
  typeof window !== 'undefined' ? window.innerHeight : 0
);

标签: 高度窗口
分享给朋友:

相关文章

react如何检测窗口

react如何检测窗口

监听窗口大小变化 使用useEffect钩子和resize事件监听窗口尺寸变化。在组件挂载时添加事件监听器,卸载时移除监听器以避免内存泄漏。 import { useState, useEffect…

js实现vue弹窗窗口

js实现vue弹窗窗口

使用 Vue.js 实现弹窗窗口 基础弹窗组件 创建一个基础的 Vue 弹窗组件,包含显示/隐藏功能: <template> <div class="modal" v-if="…

react如何关闭当前窗口

react如何关闭当前窗口

在React中关闭当前窗口可以通过以下几种方法实现,具体取决于应用场景和需求: 使用window.close() JavaScript原生方法window.close()可以直接关闭当前窗口,但需要…

react如何获取无状态组件高度

react如何获取无状态组件高度

获取无状态组件高度的方法 在React中,无状态组件(函数组件)本身没有实例,因此无法直接通过ref获取DOM元素的高度。以下是几种可行的解决方案: 使用useRef和useEffect钩子 通过R…

js实现聊天窗口

js实现聊天窗口

实现聊天窗口的基本结构 使用HTML和CSS构建聊天窗口的界面框架。HTML部分需要包含消息显示区域和输入框,CSS用于美化界面。 <div class="chat-container">…

js实现窗口堵塞

js实现窗口堵塞

实现窗口堵塞的方法 使用JavaScript实现窗口堵塞通常指阻止用户关闭或导航离开当前页面。以下是几种常见场景的实现方式: 阻止浏览器窗口关闭 通过监听beforeunload事件,可以显示确认对…