操作
2023年11月26日
一、事件冒泡
冒泡阶段: 开发者正常给 React
绑定的事件比如 onClick
,onChange
,默认会在模拟冒泡阶段执行
export default function Index(){
const handleClick=()=>{ console.log('模拟冒泡阶段执行') }
const handleClickCapture = ()=>{ console.log('模拟捕获阶段执行') }
return <div>
<button onClick={ handleClick } onClickCapture={ handleClickCapture } >点击</button>
</div>
}
二、事件捕获
捕获阶段: 如果想要在捕获阶段执行可以将事件后面加上 Capture
后缀,比如 onClickCapture
,onChangeCapture
。
export default function Index(){
const handleClick=()=>{ console.log('模拟冒泡阶段执行') }
const handleClickCapture = ()=>{ console.log('模拟捕获阶段执行') }
return <div>
<button onClick={ handleClick } onClickCapture={ handleClickCapture } >点击</button>
</div>
}
三、阻止冒泡
3.1 阻止合成事件间的冒泡
React
中如果想要阻止事件向上冒泡,可以用e.stopPropagation()
。React
阻止冒泡和原生事件中的写法差不多,但是底层原理完全不同
export default function Index(){
const handleClick=(e)=> {
e.stopPropagation() /* 阻止事件冒泡,handleFatherClick 事件讲不在触发 */
}
const handleFatherClick=()=> console.log('冒泡到父级')
return <div onClick={ handleFatherClick } >
<div onClick={ handleClick } >点击</div>
</div>
}
3.2 *阻止合成事件与最外层 document
上的事件间的冒泡
阻止合成事件与最外层 document
上的事件间的冒泡: e.nativeEvent.stopImmediatePropagation()