当前位置:首页 > 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 缓存函数:

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

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

react实现监听

标签: react
分享给朋友:

相关文章

react native 如何

react native 如何

安装 React Native 开发环境 确保系统已安装 Node.js(建议版本 16 或更高)。通过以下命令安装 React Native CLI 工具: npm install -g rea…

react如何取消渲染

react如何取消渲染

取消渲染的方法 在React中,取消渲染通常指的是在某些条件下阻止组件渲染或中断正在进行的渲染过程。以下是几种常见的方法: 条件渲染 通过条件判断决定是否渲染组件或部分内容。可以使用if语句或三元…

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修…

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实…

react如何销毁

react如何销毁

React 组件销毁的机制 在 React 中,组件的销毁通常由 React 的生命周期管理。当组件从 DOM 中移除时,React 会自动触发销毁相关的生命周期方法。以下是关键点: 组件的销毁通常…

如何选购react

如何选购react

选购 React 相关产品或服务的建议 React 是一个用于构建用户界面的 JavaScript 库,广泛应用于前端开发。以下是选购 React 相关产品(如课程、书籍、工具、组件库等)的参考方法:…