当前位置:首页 > React

react如何监听document

2026-02-12 02:34:49React

监听 document 事件

在 React 中监听 document 事件可以通过 useEffect 钩子实现。在组件挂载时添加事件监听器,并在卸载时移除。

react如何监听document

import React, { useEffect } from 'react';

function MyComponent() {
  useEffect(() => {
    const handleKeyDown = (event) => {
      console.log('Key pressed:', event.key);
    };

    document.addEventListener('keydown', handleKeyDown);

    return () => {
      document.removeEventListener('keydown', handleKeyDown);
    };
  }, []);

  return <div>Check console for key presses</div>;
}

自定义 hook 封装

为了复用监听逻辑,可以将其封装为自定义 hook。

react如何监听document

import { useEffect } from 'react';

function useDocumentEvent(event, callback) {
  useEffect(() => {
    document.addEventListener(event, callback);
    return () => {
      document.removeEventListener(event, callback);
    };
  }, [event, callback]);
}

function MyComponent() {
  useDocumentEvent('click', () => {
    console.log('Document clicked');
  });

  return <div>Click anywhere</div>;
}

处理依赖项问题

如果回调函数依赖组件状态或 props,需将其加入 useEffect 的依赖数组,或使用 useCallback 优化。

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

function MyComponent() {
  const [count, setCount] = useState(0);

  const handleScroll = useCallback(() => {
    console.log('Scroll count:', count);
  }, [count]);

  useEffect(() => {
    document.addEventListener('scroll', handleScroll);
    return () => {
      document.removeEventListener('scroll', handleScroll);
    };
  }, [handleScroll]);

  return (
    <div>
      <button onClick={() => setCount(count + 1)}>Increment: {count}</button>
    </div>
  );
}

注意事项

  • 确保在组件卸载时移除事件监听,避免内存泄漏。
  • 避免在每次渲染时重新绑定事件,通过依赖数组或 useCallback 优化性能。
  • 对于频繁触发的事件(如 scrollmousemove),考虑使用节流或防抖技术减少处理频率。

标签: reactdocument
分享给朋友:

相关文章

如何优化react

如何优化react

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

react如何衰减

react如何衰减

React 中的动画衰减效果实现 在 React 中实现衰减效果(如滚动衰减、拖动释放后的惯性滑动)通常需要结合物理动画原理或第三方动画库。以下是几种常见方法: 使用 CSS 动画和 @keyfra…

react如何收录

react如何收录

React 收录方法 React 的收录主要涉及搜索引擎优化(SEO)和预渲染技术。由于 React 是单页应用(SPA),默认情况下内容由 JavaScript 动态生成,可能导致搜索引擎爬虫难以收…

react如何读

react如何读

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

react如何折叠

react如何折叠

在 React 中实现折叠功能 使用 useState 管理折叠状态 通过 useState 定义一个状态变量来控制折叠面板的显示与隐藏。例如: const [isCollapsed, setIsC…

react如何启动

react如何启动

启动 React 项目的步骤 确保已安装 Node.js React 需要 Node.js 环境运行,建议安装最新稳定版(LTS)。可通过以下命令检查是否已安装: node -v npm -v…