事件处理
1、绑定事件
1.1、绑定方式1
js
<Button size={"large"} type={"primary"} onClick={ ()=>{
console.log("Click1")
} }>add1</Button>
1.2、绑定方式2
js
<Button size={"large"} type={"primary"} onClick={ this.handlerClick2 }>add2</Button>
handlerClick2(){
console.log("Click2")
}
1.3、绑定方式3
js
<Button size={"large"} type={"primary"} onClick={ this.handlerClick3 }>add3</Button>
handlerClick3 = ()=>{
console.log("Click3")
}
1.4、绑定方式4 (最为推荐此写法)
js
<Button size={"large"} type={"primary"} onClick={ ()=>{
this.handlerClick4() // 比较推荐
} }>add4</Button>
handlerClick4 = ()=>{
console.log("Click4")
}
1.5 完整代码
js
import React, {Component} from "react";
import { Button, Input } from 'antd';
import './css/App.css'
export default class App extends Component {
render() {
return (
<div style={{marginTop:10}}>
<Input style={{width:300}} size={"large"} />
<Button size={"large"} type={"primary"} onClick={ ()=>{
console.log("Click1")
} }>add1</Button>
<Button size={"large"} type={"primary"} onClick={ this.handlerClick2 }>add2</Button>
<Button size={"large"} type={"primary"} onClick={ this.handlerClick3 }>add3</Button>
<Button size={"large"} type={"primary"} onClick={ ()=>{
this.handlerClick4() // 比较推荐
} }>add4</Button>
</div>
)
}
handlerClick2(){
console.log("Click2")
}
handlerClick3 = ()=>{
console.log("Click3")
}
handlerClick4 = ()=>{
console.log("Click4")
}
}
2、事件handler的写法
一般推荐handlerClick4()
的写法,也会方便传参数。
js
import React, {Component} from "react";
import { Button, Input } from 'antd';
import './css/App.css'
export default class App extends Component {
a = 35;
render() {
return (
<div style={{marginTop:10}}>
<Input style={{width:300}} size={"large"} />
<Button size={"large"} type={"primary"} onClick={ ()=>{
console.log("我能不能访问到 a= ", this.a)
} }>add1</Button>
{/*不推荐*/}
<Button style={{backgroundColor:'#e37318',border:"none"}} size={"large"} type={"primary"} onClick={ this.handlerClick2.bind(this) }>add2-不推荐</Button>
{/*比较推荐*/}
<Button size={"large"} type={"primary"} onClick={ this.handlerClick3 }>add3-推荐</Button>
{/*非常推荐*/}
<Button style={{backgroundColor:'#2ba471', border:"none"}} size={"large"} type={"primary"} onClick={ ()=>{
this.handlerClick4() // 非常推荐,传参数
} }>add4-推荐-传参</Button>
</div>
)
}
/*
bind:改变this,手动执行函数
call:改变this,自动执行函数
apply:改变this,自动执行函数
*/
// 不推荐这种写法
handlerClick2(){
console.log(this); // undefined
console.log("Click2", this.a); // 报错
}
// 推荐写法,传参数就不太方便了
handlerClick3 = ()=>{
console.log("Click3", this.a) // 35。箭头函数
}
handlerClick4 = ()=>{
console.log("Click4", this.a) // 35.箭头函数
}
}
注意:
如果调用handlerClick2
的时候this.handlerClick2.bind(this)
这里不加 .bind(this)
,那么这里的 this
就无法获取,就是 undefined
,调用 this.a
就会报错。
handlerClick3
和handlerClick4
都是采用箭头函数的写法,可以正常获取到this
。
handlerClick4()
的写法方便传递参数,最推荐用此写法。