当前位置:首页 > 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性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…

react 如何调试

react 如何调试

调试 React 应用的方法 使用 React Developer Tools 安装 Chrome 或 Firefox 的 React Developer Tools 扩展,可以检查组件树、状态和 p…

react如何拓展

react如何拓展

React 拓展方法 使用高阶组件(HOC) 高阶组件是一种复用组件逻辑的方式,通过接收一个组件并返回一个新组件实现功能拓展。例如,为组件添加日志功能: function withLogging…

react 如何遍历

react 如何遍历

遍历数组 在React中遍历数组通常使用map方法,它会返回一个新的数组。map是处理数组并渲染列表元素的首选方法。 const items = ['Apple', 'Banana', 'Cherr…

react 如何获取dom

react 如何获取dom

获取 DOM 的方法 在 React 中,可以通过 useRef 或 createRef 来获取 DOM 节点。useRef 是函数组件中常用的方法,而 createRef 通常用于类组件。 使用…

react如何创建框架

react如何创建框架

React 创建框架的方法 React 本身是一个用于构建用户界面的 JavaScript 库,但可以通过多种方式创建框架或项目结构。以下是几种常见的方法: 使用 Create React App…