React是按W3C实现的事件机制。使用react有一点很重要,就熟悉w3c规范。
class Child1 extends Component {
state = { count: 0 }
countClick = (e) => {
const count = this.state.count + 1;
this.setState({ count });
e.ChildData = { count };
}
render() {
return <span onClick={ this.countClick }>Child1的数是{this.state.count}</span>
}
};
class Child2 extends Component {
state = { count: 0 }
render() {
return <span>嵌套:{ this.props.children }</span>
}
};
class App extends Component {
appOnClick = (e)=>{
console.log(e.ChildData);// 传出内部的数据
}
render() {
return (<div onClick={ this.appOnClick }>
<Child2>
<Child1/>
</Child2>
</div>)
}
}
export default App
使用e可以将 内部组件的state带出。
好处:内部可以维护state;
缺点:在外部绑定事件,并调用e.stopPropagation,最外层将无法获得数据。