react中处理事件的编写方法

在react中元素处理事件时,通过jsx, 传递一个函数作为事件处理程序,而并不是跟html中一样,使用一个字符串。

例如

// 创建一个组件
class Text extends React.Component{
	constructor(props){
		super(props)
		// 2. 必须有这个绑定,使this在回调中起到作用
		this.handleClick = this.handleClick.bind(this)
	}
	render(){
		return(
			// 1. 设置点击事件
			<button onClick={handleClick}>点击</button>
		)
	}
	// 3. 事件程序
	handleClick(){
		console.log("这是一个点击事件程序");
	}
}
// 这里的this必须绑定否则的话,this会是undefined,一般情况,如果你引用一个后面没有跟() 的方法,例如 onClick = {this.handleClick}, 就必须绑定该方法

这样写调用bind会有些麻烦,也可以使用属性初始化语法, 这样可以使用属性初始值设置来正确地绑定(bind)回调:

class Text extends React.Component{
	// 这个语法确保 this 绑定在 handleClick中
	handleClick =()=>{
		console.log("这是一个点击事件")
	}
	render(){
		return(
			<button onClick={this.handleClick}>点击</button>
		)
	}
}
// 这种语法在`创建React App` 中是默认开启的

也可以在回调中使用一个箭头函数

class Text extends React.Component{
	// 这个语法确保 this 绑定在 handleClick中
	handleClick (){
		console.log("这是一个点击事件")
	}
	render(){
		return(
			<button onClick={()=>this.handleClick()}>点击</button>
		)
	}
}

用这种语法写的话,就是每次这个Text组件渲染时都会创建一个不同的回调,但会如果这个回调被作为prop属性传递下级组件时,这些组件可以能需要额外的重复渲染,会有一些性能问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值