当前位置:首页 > React

react如何获取window对象

2026-01-24 10:52:13React

获取 window 对象的方法

在 React 中,window 对象是全局的浏览器 API,可以直接访问。以下是几种常见的使用场景:

直接访问全局对象

const windowWidth = window.innerWidth;
const windowHeight = window.innerHeight;

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

通过 useEffect Hook 可以在组件挂载后安全访问 window 对象:

react如何获取window对象

import React, { useEffect } from 'react';

function MyComponent() {
  useEffect(() => {
    console.log('Window width:', window.innerWidth);
    const handleResize = () => {
      console.log('Window resized:', window.innerWidth);
    };
    window.addEventListener('resize', handleResize);
    return () => window.removeEventListener('resize', handleResize);
  }, []);
  return <div>Check console for window size</div>;
}

SSR 环境下的兼容处理

在服务端渲染(SSR)时,window 对象不存在,需要先判断环境:

react如何获取window对象

if (typeof window !== 'undefined') {
  console.log('Window is available:', window.location.href);
}

自定义 Hook 封装

可以创建一个可复用的 Hook 来获取窗口尺寸:

import { useState, useEffect } from 'react';

function useWindowSize() {
  const [size, setSize] = useState({
    width: typeof window !== 'undefined' ? window.innerWidth : 0,
    height: typeof window !== 'undefined' ? window.innerHeight : 0,
  });

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

  return size;
}

注意事项

  • 避免在渲染阶段直接调用 window 方法,可能导致 SSR 报错
  • 事件监听需在 useEffect 中清理,防止内存泄漏
  • 对于 TypeScript 项目,可直接使用 window 类型,无需额外声明

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

相关文章

react native 如何

react native 如何

React Native 开发基础 React Native 是一个用于构建跨平台移动应用的框架,允许开发者使用 JavaScript 和 React 编写代码,同时生成原生 iOS 和 Androi…

react native如何启动

react native如何启动

如何启动 React Native 项目 安装 Node.js 和 npm 确保已安装 Node.js(建议版本 16 或更高)和 npm(Node.js 自带)。可通过以下命令检查版本: node…

react moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment: npm install react-moment 或 yarn add react-moment…

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实…

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 基础页面结构 在 s…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…