事件绑定
React 组件的事件绑定与 DOM 元素的事件绑定有些不同。
在 React 中,事件绑定是通过 JSX 语法来实现的。
import './App.css';
import React from 'react';
class App extends React.Component {
render() {
return <div className="App" >
<div onClick={() => {
console.log("clicked");
}}>button</div>
</div>;
}
}
export default App;
在 JSX 中,事件绑定通过 on
开头的属性来实现。
如上例,onClick
事件绑定到 <div>
元素上,当该元素被点击时,会执行 console.log("clicked")
方法。
this 绑定
改变this指向的方法:
- 给方法调用bind规定this指向
- 使用一个匿名箭头函数
- 方法本身写为箭头函数
通过箭头函数来绑定事件时,this
关键字会指向组件实例,而不是 DOM 元素。
import './App.css';
import React from 'react';
class App extends React.Component {
f1() {
console.log(this);
}
render() {
return <div className="App" >
<div onClick={() => {
console.log(this);
}}>button</div>
</div>;
}
}
export default App;
事件绑定其他操作
- 传递参数
- 阻止默认行为
class App extends React.Component {
f1 = (a, b) => {
console.log(a + b);
}
render() {
return <div className="App" >
<div onClick={this.f1.bind(this, 1, 2)}>button</div>
</div>;
}
}