当前位置:首页 > React

react如何获取浏览器的高度

2026-01-26 03:13:17React

获取浏览器高度的方法

在React中获取浏览器窗口高度可以通过监听window对象的resize事件,并使用window.innerHeight属性实现。

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

function WindowHeightTracker() {
  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>;
}

自定义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;
}

// 使用示例
function App() {
  const height = useWindowHeight();
  return <div>窗口高度: {height}px</div>;
}

服务端渲染(SSR)兼容方案

在服务端渲染环境中,window对象不存在,需要添加条件判断防止报错。

function useWindowHeight() {
  const [height, setHeight] = useState(
    typeof window !== 'undefined' ? window.innerHeight : 0
  );

  useEffect(() => {
    if (typeof window === 'undefined') return;

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

  return height;
}

性能优化建议

频繁触发resize事件会影响性能,可以使用防抖(debounce)技术优化。

react如何获取浏览器的高度

import { useState, useEffect } from 'react';

function useDebounce(value, delay) {
  const [debouncedValue, setDebouncedValue] = useState(value);

  useEffect(() => {
    const handler = setTimeout(() => {
      setDebouncedValue(value);
    }, delay);

    return () => {
      clearTimeout(handler);
    };
  }, [value, delay]);

  return debouncedValue;
}

function useWindowHeight() {
  const [height, setHeight] = useState(
    typeof window !== 'undefined' ? window.innerHeight : 0
  );

  useEffect(() => {
    if (typeof window === 'undefined') return;

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

  const debouncedHeight = useDebounce(height, 100);
  return debouncedHeight;
}

标签: 高度浏览器
分享给朋友:

相关文章

react如何获取窗口高度

react如何获取窗口高度

获取窗口高度的方法 在React中获取窗口高度可以通过以下几种方式实现: 使用window.innerHeight 直接访问window.innerHeight属性可以获取当前窗口的视口高度(不包含…

react如何获取页面高度

react如何获取页面高度

获取页面高度的方法 在React中,可以通过多种方式获取页面高度,以下是几种常见的方法: 使用window对象 通过window.innerHeight可以获取浏览器窗口的视口高度,包括滚动条。d…

react如何对浏览器兼容

react如何对浏览器兼容

React 浏览器兼容性解决方案 React 本身支持现代浏览器,但在旧版浏览器(如 IE11)或特定环境下可能需要额外配置。以下是常见的兼容性处理方法: 使用 polyfill 填补缺失功能 安装…

如何让react浏览器支持

如何让react浏览器支持

让React应用支持不同浏览器的关键方法 使用Babel转译代码 通过配置Babel将现代JavaScript语法(如ES6+)转换为向后兼容的版本。安装@babel/preset-env并根据.br…

react中如何获取到元素滚动高度

react中如何获取到元素滚动高度

获取元素滚动高度的方法 在React中获取元素的滚动高度可以通过以下几种方式实现: 使用ref获取DOM元素 通过useRef钩子获取DOM元素的引用,直接访问元素的scrollTop属性获取垂直滚…

jquery获取元素高度

jquery获取元素高度

获取元素高度的方法 使用jQuery获取元素高度可以通过多种方式实现,具体取决于需求(如是否包含内边距、边框或外边距)。 获取内容高度(不包含padding和border) 使用height()方法…