当前位置:首页 > 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)技术优化。

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如何获取浏览器的高度

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

相关文章

jquery获取高度

jquery获取高度

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

vue实现动态高度

vue实现动态高度

Vue 实现动态高度的常见方法 使用 v-bind:style 或 :style 动态绑定样式 通过计算属性或方法动态计算高度值,绑定到元素的 style 属性上。这种方式适合高度值需要频繁变化的场景…

vue实现动态高度抖动

vue实现动态高度抖动

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

vue怎么实现高度渐变

vue怎么实现高度渐变

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

react如何监听滚动高度

react如何监听滚动高度

监听滚动高度的实现方法 在React中监听滚动高度可以通过以下几种方式实现,具体选择取决于应用场景和需求。 使用useEffect和事件监听 通过useEffect钩子添加滚动事件监听器,获取滚动位…

react如何获取窗口高度

react如何获取窗口高度

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