当前位置:首页 > React

react实现监听

2026-01-26 16:55:44React

React 监听事件的实现方法

事件监听基础
在 React 中,可以通过组件的 props 直接绑定原生 DOM 事件(如 onClickonChange)。事件处理函数接收 SyntheticEvent 对象(React 封装的事件对象)。

<button onClick={(e) => console.log("Clicked", e)}>点击</button>

类组件中的监听
类组件中通过 this 绑定事件处理函数,需注意 this 的指向问题。通常在构造函数中绑定或使用箭头函数。

class MyComponent extends React.Component {
  handleClick = (e) => {
    console.log("事件触发", e);
  };

  render() {
    return <button onClick={this.handleClick}>类组件按钮</button>;
  }
}

函数组件中的监听
函数组件直接使用箭头函数或 const 声明事件处理函数,无需考虑 this 绑定问题。

function MyComponent() {
  const handleClick = (e) => {
    console.log("函数组件事件", e);
  };

  return <button onClick={handleClick}>函数组件按钮</button>;
}

自定义事件监听
通过 useEffect 实现组件挂载时添加原生事件监听,卸载时移除。适用于非 React 封装的事件(如 resizescroll)。

import { useEffect } from "react";

function CustomListener() {
  useEffect(() => {
    const handleResize = () => console.log("窗口大小变化");
    window.addEventListener("resize", handleResize);
    return () => window.removeEventListener("resize", handleResize);
  }, []);

  return <div>监听窗口变化</div>;
}

跨组件事件通信
使用 Context API 或状态管理工具(如 Redux)实现跨组件事件监听。以下为 Context API 示例:

const EventContext = React.createContext();

function ParentComponent() {
  const [event, setEvent] = React.useState(null);
  return (
    <EventContext.Provider value={{ event, setEvent }}>
      <ChildComponent />
    </EventContext.Provider>
  );
}

function ChildComponent() {
  const { setEvent } = React.useContext(EventContext);
  return <button onClick={() => setEvent("按钮点击")}>触发事件</button>;
}

性能优化
避免在渲染函数中动态生成事件处理函数,防止不必要的子组件重渲染。使用 useCallback 缓存函数:

react实现监听

const handleClick = React.useCallback(() => {
  console.log("优化后的处理函数");
}, []);

第三方事件库
复杂场景可考虑使用事件总线库(如 EventEmitter3)或 React 生态工具(如 useEvent Hook 提案)。需注意与 React 生命周期兼容性。

标签: react
分享给朋友:

相关文章

react如何更新

react如何更新

更新 React 项目的方法 检查当前 React 版本 在项目根目录的 package.json 文件中查看 react 和 react-dom 的版本号。也可以通过命令行运行以下命令查看: np…

react实现vue

react实现vue

React 实现 Vue 功能 React 和 Vue 是两种不同的前端框架,但可以通过一些方法在 React 中实现 Vue 的特性。以下是几种常见 Vue 功能在 React 中的实现方式: 双…

react性能如何

react性能如何

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

react如何收录

react如何收录

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

react 如何获取dom

react 如何获取dom

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

react如何重写alert

react如何重写alert

重写 React 中的 alert 方法 在 React 中,直接使用原生 alert 会破坏用户体验,通常需要自定义弹窗组件替代。以下是实现方法: 使用自定义弹窗组件 创建可复用的弹窗组件,替代原…