react中绑定事件为啥不绑定在ul上使用事件代理而直接绑定在li上?
// 普通写法const Sidebar = (props) => { function clickCallback(e) { let type = e.target.getAttribute("data-type"); props.pushTags(type); } return ( <ul className={styles.sidebar} id="ul"> {typeMap.map((item) => ( <li data-type={item.id} key={item.id} onClick={(e) => clickCallback(e)} > {item.desc} </li> ))} </ul> );};
// 事件委托写法const Sidebar = (props) => { useEffect(() => { document.getElementById("ul").addEventListener("click", (e) => { if (e.target.nodeName == "UL") return; let type = e.target.getAttribute("data-type"); props.pushTags(type); }); }, []); return ( <ul className={styles.sidebar} id="ul"> {typeMap.map((item) => ( <li data-type={item.type} key={item.id}> {item.desc} </li> ))} </ul> );};
因为react合成事件已经用事件代理给你实现了
https://zh-hans.legacy.reactjs.org/docs/events.html
可以参考看看 https://segmentfault.com/a/1190000038251163
在 React 中,通常推荐直接将事件处理器绑定到具体的元素上,而不是使用事件委托。以下是几个原因:
在你的例子中,如果你使用事件委托,你需要检查 e.target.nodeName
是否为 "UL"
,这可能会使得代码变得更复杂和难以理解。而且,如果 ul
元素被其他元素包裹(例如,<div>
元素),那么事件委托可能无法正常工作。因此,直接将事件处理器绑定到 li
元素上通常是更好的选择。
除了可以使用addEventListener()方法监听某个特定元素上的事件外,也可以使用.on()方法实现批量元素的事件绑定。 .on( event , selector , handler ) event Type: String 需监听的事件名称,例如:'tap' selector Type: String 选择器 handler Type: Function( Event event )
本文向大家介绍js绑定事件和解绑事件,包括了js绑定事件和解绑事件的使用技巧和注意事项,需要的朋友参考一下 在js中绑定多个事件用到的是两个方法:attachEvent和addEventListener,但是这两个方法又存在差异性 attachEvent方法 只支持IE678,不兼容其他浏览器 addEventListener方法 兼容火狐谷歌,不兼容IE8及以下 addEventListe
DOM 提供了许多事件供开发者进行绑定,以响应各种操作,丰富页面交互。 想要触发事件,就得先给 DOM 节点绑定事件,提供事件处理器。 1. 直接在 HTML 上提供事件 这种方式是将事件内联在 HTML 代码中。 案例演示 预览 复制 复制成功! <style> .box { width: 100px; height: 100px; background: green
事件绑定语法说明 MIP 提供了 on 属性来定义对组件的事件绑定与事件触发时的行为。 您已通过 MIP.scrollTo() 方法滚动到底部,请点击下方按钮返回原示例点击返回原示例 单事件绑定语法 on 属性的语法格式如下所示: <TAGNAME on="eventName:targetId.actionName(args)" > </TAGNAME> 相关参数的说明如下表所示: 参数名 是
本文向大家介绍如何使用JavaScript处理绑定事件?,包括了如何使用JavaScript处理绑定事件?的使用技巧和注意事项,需要的朋友参考一下 要使用JavaScript处理事件,请在任何元素上对鼠标单击事件使用click。 示例 您可以尝试运行以下代码,以了解如何使用JavaScript处理绑定事件:
本文向大家介绍写例子说明如何给li绑定事件(ul下有1000+个li)?相关面试题,主要包含被问及写例子说明如何给li绑定事件(ul下有1000+个li)?时的应答技巧和注意事项,需要的朋友参考一下 在不考虑任何情况时,直接使用 就可以对 进行事件绑定。 当子元素过多时,可以利用“事件冒泡”在 上进行绑定,实现事件委托。可以利用 对被触发的子元素进行操作。 参考文章:实例分析JavaScript中