当前位置:首页 > React

react如何获取window对象

2026-03-10 19:10:18React

获取 window 对象的方法

在 React 中,window 对象是全局的浏览器对象,可以通过直接访问 window 来获取。以下是几种常见场景下的使用方法:

直接访问全局对象

const windowWidth = window.innerWidth;
const windowHeight = window.innerHeight;
console.log(`窗口宽度: ${windowWidth}, 高度: ${windowHeight}`);

在组件生命周期或 Hooks 中访问

react如何获取window对象

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

function WindowSizeTracker() {
  const [size, setSize] = useState({
    width: window.innerWidth,
    height: window.innerHeight
  });

  useEffect(() => {
    const handleResize = () => {
      setSize({
        width: window.innerWidth,
        height: window.innerHeight
      });
    };
    window.addEventListener('resize', handleResize);
    return () => window.removeEventListener('resize', handleResize);
  }, []);

  return <div>当前窗口尺寸: {size.width} x {size.height}</div>;
}

注意事项

  • 在服务端渲染(SSR)时,window 对象不存在,需通过 typeof window !== 'undefined' 进行防护:

    react如何获取window对象

    useEffect(() => {
    if (typeof window !== 'undefined') {
      // 安全访问 window
    }
    }, []);
  • 对于 TypeScript 项目,可通过声明全局类型解决类型检查问题:

    declare global {
    interface Window {
      myCustomProp: string;
    }
    }

典型用例

  1. 监听窗口事件(如 resize
  2. 调用浏览器 API(如 localStorage
  3. 使用第三方库依赖 window 对象(如地图 SDK)

标签: 对象react
分享给朋友:

相关文章

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修改…

react如何销毁

react如何销毁

React 组件销毁的机制 在 React 中,组件的销毁通常由 React 的生命周期管理。当组件从 DOM 中移除时,React 会自动触发销毁相关的生命周期方法。以下是关键点: 组件的销毁通常…

react如何检测

react如何检测

检测 React 应用的方法 使用 PropTypes 进行类型检查 PropTypes 是 React 内置的类型检查工具,用于验证组件的 props 是否符合预期。在开发环境中,PropTypes…

如何构建react

如何构建react

构建 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过命令行验证: node -v npm -v 使用 Create React Ap…

react 如何debug

react 如何debug

React 调试方法 使用 React Developer Tools React Developer Tools 是浏览器扩展,支持 Chrome 和 Firefox。安装后,可以在开发者工具中查看…

如何升级react native

如何升级react native

升级 React Native 的步骤 检查当前版本 运行以下命令查看当前项目的 React Native 版本: react-native --version 更新 React Native CL…