当前位置:首页 > React

react如何获取窗口高度

2026-01-24 14:57:03React

获取窗口高度的方法

在React中获取窗口高度可以通过以下几种方式实现:

使用window.innerHeight

直接访问window.innerHeight属性可以获取当前窗口的视口高度(不包含工具栏和滚动条)。

const windowHeight = window.innerHeight;

使用useEffect和useState结合

在函数组件中,可以使用React的useEffectuseState钩子来动态获取和更新窗口高度。

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

function App() {
  const [windowHeight, setWindowHeight] = useState(window.innerHeight);

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

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

  return <div>Window height: {windowHeight}px</div>;
}

自定义Hook封装

可以将获取窗口高度的逻辑封装成一个自定义Hook,方便复用。

import { useState, useEffect } from 'react';

function useWindowHeight() {
  const [windowHeight, setWindowHeight] = useState(window.innerHeight);

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

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

  return windowHeight;
}

function App() {
  const height = useWindowHeight();
  return <div>Window height: {height}px</div>;
}

注意事项

  • 在服务器端渲染(SSR)时,window对象不存在,需要确保代码在客户端执行。
  • 监听resize事件可能会影响性能,建议在组件卸载时移除事件监听。
  • 如果需要获取包含工具栏和滚动条的完整窗口高度,可以使用window.outerHeight

react如何获取窗口高度

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

相关文章

vue实现dialog窗口

vue实现dialog窗口

Vue 实现 Dialog 窗口的方法 使用 Vue 原生组件实现 在 Vue 中可以通过 v-if 或 v-show 控制 Dialog 的显示与隐藏。创建一个基础 Dialog 组件: <…

jquery获取高度

jquery获取高度

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

vue实现表单窗口

vue实现表单窗口

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

vue实现新增弹窗窗口

vue实现新增弹窗窗口

Vue 实现新增弹窗窗口 在 Vue 中实现新增弹窗窗口通常需要结合组件化和状态管理。以下是几种常见的实现方式: 使用 v-if 或 v-show 控制弹窗显示 通过数据绑定控制弹窗的显示与隐藏,…

vue实现动态高度抖动

vue实现动态高度抖动

实现动态高度抖动的方案 在Vue中实现动态高度抖动效果,可以通过CSS动画或JavaScript动画库实现。以下是几种常见方法: 使用CSS关键帧动画 通过定义@keyframes创建抖动动画,动态…

vue如何实现层叠窗口

vue如何实现层叠窗口

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