当前位置:首页 > 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;
}

注意事项

react如何获取window对象

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

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

相关文章

react native如何启动

react native如何启动

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

如何同步react

如何同步react

同步React组件状态的方法 使用useState和useEffect钩子组合可以同步React组件的状态。useState用于声明状态变量,useEffect用于监听状态变化并执行副作用。 imp…

react如何发音

react如何发音

React的发音 React的正确发音为 /riˈækt/,类似于“ree-akt”。以下是详细说明: 发音分解 第一个音节“Ree”发音类似英文单词“see”中的“ee”音。…

react如何检测

react如何检测

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

react如何重新加载

react如何重新加载

重新加载当前页面 在React中重新加载当前页面可以通过window.location.reload()方法实现。该方法会强制浏览器重新加载当前URL,类似于按下F5刷新页面。 const relo…

react如何引入jq

react如何引入jq

在React中引入jQuery的方法 React和jQuery可以共存,但需要注意避免直接操作DOM,因为React有自己的虚拟DOM机制。以下是几种引入jQuery的方式: 通过npm安装jQue…