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

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),考虑使用节流或防抖技术减少处理频率。

react如何监听document

标签: reactdocument
分享给朋友:

相关文章

如何学react

如何学react

学习 React 的基础知识 React 是一个用于构建用户界面的 JavaScript 库。学习 React 的第一步是掌握其核心概念,包括组件、状态(State)、属性(Props)和生命周期方法…

react 如何引入jquery

react 如何引入jquery

引入 jQuery 到 React 项目 在 React 项目中引入 jQuery 可以通过多种方式实现,但需要注意 React 和 jQuery 操作 DOM 的方式可能冲突,因此建议仅在必要时使用…

react moment如何使用

react moment如何使用

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

react如何读

react如何读

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

react如何卸载

react如何卸载

卸载 React 项目或依赖 如果需要完全卸载 React 项目或相关依赖,可以按照以下步骤操作: 删除项目文件夹 直接删除整个项目文件夹是最彻底的方式。确保已备份重要代码或配置文件。 卸载全局安…

react如何encode

react如何encode

React 中编码的实现方式 在 React 中,编码通常涉及对 URL、HTML 实体或特殊字符的处理。以下是几种常见的编码方法: 使用 encodeURIComponent 进行 URL 编码…