React 组件中怎么做事件代理

在 React 组件中使用事件代理可以使用以下方法:

  1. 使用 on 方法来绑定事件监听器:
jsx 复制代码
class MyComponent extends React.Component {
  handleClick(event) {
    if (event.target.tagName === 'BUTTON') {
      console.log('Button clicked');
    }
  }

  render() {
    return (
      <div onClick={this.handleClick}>
        <button>Click me</button>
      </div>
    );
  }
}

在上述例子中,handleClick 方法被绑定到父级 div 元素的 onClick 事件上。当点击 button 元素时,事件会冒泡到父级 div 元素,从而触发 handleClick 方法。然后可以通过 event.target 来判断点击的元素是否是 button 元素。

  1. 使用条件渲染来为不同的元素绑定不同的事件:
jsx 复制代码
class MyComponent extends React.Component {
  handleClick(buttonType) {
    console.log(`${buttonType} clicked`);
  }

  render() {
    return (
      <div>
        <button onClick={() => this.handleClick('Button 1')}>Button 1</button>
        <button onClick={() => this.handleClick('Button 2')}>Button 2</button>
      </div>
    );
  }
}

在上述例子中,通过使用箭头函数,在每个 button 元素的 onClick 属性中调用不同的 handleClick 方法,并传递不同的参数。

这些方法都是使用了 React 的事件委托机制,利用事件冒泡原理来实现事件代理。这样可以减少事件监听器的数量,并且提高性能。

相关推荐
木易士心几秒前
深入剖析:按下 F5 后,浏览器前端究竟发生了什么?
前端·javascript
在掘金801102 分钟前
vue3中使用medium-zoom
前端·vue.js
xump24 分钟前
如何在DevTools选中调试一个实时交互才能显示的元素样式
前端·javascript·css
折翅嘀皇虫26 分钟前
fastdds.type_propagation 详解
java·服务器·前端
Front_Yue27 分钟前
深入探究跨域请求及其解决方案
前端·javascript
wordbaby28 分钟前
React Native 进阶实战:基于 Server-Driven UI 的动态表单架构设计
前端·react native·react.js
抱琴_29 分钟前
【Vue3】我用 Vue 封装了个 ECharts Hooks,同事看了直接拿去复用
前端·vue.js
风止何安啊30 分钟前
JS 里的 “变量租房记”:闭包是咋把变量 “扣” 下来的?
前端·javascript·node.js
Danny_FD35 分钟前
用 ECharts markLine 标注节假日
前端·echarts
程序员西西36 分钟前
SpringBoot无感刷新Token实战指南
java·开发语言·前端·后端·计算机·程序员