1 事件三个阶段 捕获、目标、处理 (具体百度,后面有空补全)

2

import React from "react";

class Test extends React.Component {

parentRef;

childRef;

constructor(props) {

super(props);

this.parentRef = React.createRef();

this.childRef = React.createRef();

}

componentDidMount() {

document.addEventListener(

"click",

() => {

console.log(`document原生事件捕获`);

},

true

);

document.addEventListener("click", () => {

console.log(`document原生事件冒泡`);

});

this.parentRef.current.addEventListener(

"click",

() => {

console.log(`父元素原生事件捕获`);

},

true

);

this.parentRef.current.addEventListener("click", () => {

console.log(`父元素原生事件冒泡`);

});

this.childRef.current.addEventListener(

"click",

() => {

console.log(`子元素原生事件捕获`);

},

true

);

this.childRef.current.addEventListener("click", () => {

console.log(`子元素原生事件冒泡`);

});

}

handleParentBubble = () => {

console.log(`父元素React事件冒泡`);

};

handleChildBubble = (e) => {

console.log(`子元素React事件冒泡`);

};

handleParentCapture = () => {

console.log(`父元素React事件捕获`);

};

handleChileCapture = () => {

console.log(`子元素React事件捕获`);

};

render() {

return (

ref={this.parentRef}

onClick={this.handleParentBubble}

onClickCapture={this.handleParentCapture}

>

ref={this.childRef}

onClick={this.handleChildBubble}

onClickCapture={this.handleChileCapture}

>

事件处理测试