Ant-design Button onClick 获取按钮的目标

在React中使用Ant Design的Button组件时,遇到onClick事件处理的问题。由于Antd的Button内部结构,直接使用e.target可能获取到的是span元素而非预期的button。此时,应该使用e.currentTarget来获取事件绑定的元素。event.target表示事件发生的真实元素,而event.currentTarget始终指向事件处理函数所绑定的元素。理解这两者的区别需要了解事件冒泡和捕获的概念。在事件冒泡过程中,事件从子元素传递到父元素;而在事件捕获阶段则相反。addEventListener的第三个参数可以指定事件绑定阶段,为true时在捕获阶段,否则在冒泡阶段。通过实例展示了event.target和event.currentTarget在不同场景下的行为。
摘要由CSDN通过智能技术生成

用 React 的 Ant-Design 发现的 Button 获取 onClick 的 e.target 的时候经常会出问题,发现 Antd 封装的 Button 是一个 button 里面还有 span,如果点击的是按钮上的文字的话,获取的是 span,这个时候 e.target 是不起作用的。可以用 e.currentTarget。这两者有什么区别呢?如下:

event.target

This property of event objects is the object the event was dispatched on. It is different than event.currentTarget when the event handler is called in bubbling or capturing phase of the event.

event.currentTarget

Identifies the current target for the event, as the event traverses the DOM. It always refers to the element the event handler has been attached to as opposed to event.target which identifies the element on which the event occurred.

读定义总是很绕,要彻底了解这两者的区别,我们要先了解浏览器中事件传递的机制冒泡和捕获。

冒泡和捕获

在页面中点击一个元素,事件是从这个元素的祖先元素中逐层传递下来的,这个阶段为事件的捕获阶段。当事件传递到这个元素之后,又会把事件逐成传递回去,直到根元素为止,这个阶段是事件的冒泡阶段。

在这里插入图片描述在这里插入图片描述我们为一个元素绑定一个点击事件的时候,可以指定是要在捕获阶段绑定或者换在冒泡阶段绑定。 当addEventListener的第三个参数为true的时候,代表是在捕获阶段绑定,当第三个参数为false或者为空的时候,代表在冒泡阶段绑定。

知道事件有这么一个穿透的过程之后,结合下面的例子,就可以很好来理解event.target和event.currentTarget:

<div id="a">
    <div id="b">
      <div id="c"
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要修改 ant-design-pro DatePicker 季度选择器组件,您需要按照以下步骤进行操作: 1. 导入 `DatePicker` 组件: ```javascript import { DatePicker } from 'antd'; ``` 2. 在 `DatePicker` 组件中使用 `mode` 属性设置为 `quarter`,以启用季度选择器: ```javascript <DatePicker mode="quarter" /> ``` 3. 如果您想要修改季度选择器的样式或行为,可以通过 `picker` 属性传递一个自定义的季度选择器组件。您可以创建一个新的组件并将其传递给 `picker` 属性: ```javascript import { DatePicker } from 'antd'; import QuarterPicker from './QuarterPicker'; <DatePicker picker={<QuarterPicker />} /> ``` 4. 在自定义季度选择器组件中,您可以按照 antd 的 DatePicker API 来构建组件,根据您的需求进行修改。例如,您可以添加一个 `QuarterPicker` 组件,它包含了四个季度按钮,并在用户选择一个季度时将其传递回父组件: ```javascript import React from 'react'; import { DatePicker } from 'antd'; const QuarterPicker = ({ onChange }) => { const handleQuarterChange = (quarter) => { onChange(quarter); }; return ( <div> <button onClick={() => handleQuarterChange(1)}>Q1</button> <button onClick={() => handleQuarterChange(2)}>Q2</button> <button onClick={() => handleQuarterChange(3)}>Q3</button> <button onClick={() => handleQuarterChange(4)}>Q4</button> </div> ); }; export default QuarterPicker; ``` 通过以上步骤,您可以自定义 ant-design-pro DatePicker 季度选择器组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值