React中的事件绑定——为什么无法获取this的值

博客主要介绍了React中的事件绑定方法。指出两种绑定方式是否可行取决于方法定义和所需参数,若分不清区别会导致获取不到this的值。还说明了不同方法定义下获取this值的绑定方式,以及这与函数作用域有关,箭头函数不会产生新作用域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

React事件绑定的方法

说到React中的事件绑定,你是不是见过这种:

<button onClick={this.handleButton} />

是不是也见到过这种:

<button onClick={this.handleButton.bind(this)} />

What…这些有什么不一样?

其实这两种绑定方式都可以,但是要看你的方法是怎么定义的,要用到什么参数,如果搞不清这两种事件绑定方法的区别的话,就会——获取不到this的值

解决方法:

一、如果的你的方法是这样定义的:

handleButton(){
	this.setState({
		//key:value
	})
}

那你需要用this.handleButton.bind(this)这种绑定方法才能够在这个方法内获取到this的值


二、如果你的方法是这样定义的:

handleButton=()=>{
	this.setState({
		//key:value
	})
}

那么两种绑定方式都可以获取到this的值


为什么?

这其实是函数作用域的问题。

handleButton(){
	this.setState({
		//key:value
	})
}

像这种形式的定义,在这个函数内部会产生一个新的作用域,所以你在这里面调用this的话,this指向的这个handleButton函数,而不是你的组件。所以如果你在这里面调用组件的方法,就会报错

如果你要这么定义你的方法,那么在事件绑定的时候就要在后面加上.bind(this),才能让你的函数获取到组件的属性和方法。

而使用箭头函数,则不会产生新的作用域。箭头函数里面的this,就是指向组件本身。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值