当前位置:首页 > 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:

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;

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

const height = useWindowHeight();

注意事项

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

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

react如何获取窗口高度

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

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

相关文章

jquery获取高度

jquery获取高度

jQuery获取元素高度的方法 使用jQuery可以方便地获取元素的高度,以下是几种常见的方法: 获取元素的实际高度(包括padding但不包括border和margin) var height…

vue实现表单窗口

vue实现表单窗口

Vue 实现表单窗口的方法 使用 Vue 组件创建表单 创建一个 Vue 单文件组件(SFC),包含表单元素和提交逻辑。表单可以包含输入框、下拉菜单、复选框等常见元素。 <template&g…

vue如何实现层叠窗口

vue如何实现层叠窗口

Vue 实现层叠窗口的方法 在 Vue 中实现层叠窗口(类似模态框或多层对话框)可以通过动态组件、条件渲染和 CSS 层叠上下文实现。以下是几种常见方法: 使用 v-if 和 z-index 控制显…

vue怎么实现高度渐变

vue怎么实现高度渐变

实现高度渐变的方法 在Vue中实现高度渐变效果,可以通过CSS的transition属性结合动态绑定样式或类名来实现。以下是几种常见的方法: 使用CSS过渡 通过Vue的v-bind:sty…

js实现vue弹窗窗口

js实现vue弹窗窗口

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

react如何关闭当前窗口

react如何关闭当前窗口

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