当前位置:首页 > 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 对象:

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 对象不存在,需要先判断环境:

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如何获取window对象

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

相关文章

react native 如何

react native 如何

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

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

react moment如何使用

react moment如何使用

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

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gr…

react如何查

react如何查

React 查询方法 React 提供了多种查询 DOM 元素的方式,以下是几种常见的方法: 使用 ref 通过 useRef 钩子可以获取 DOM 节点的引用,适用于直接操作 DOM 的场景。…

react如何读

react如何读

React 的发音 React 的发音为 /riˈækt/(音标),读作“瑞-艾克特”。其中: “Re” 发音类似英文单词 “read” 的开头部分。 “act” 发音与英文单词 “act” 一致。…