web前端全系列 教程
1839个小节阅读:2244.1k
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
类组件中的this
指向类的实例,在render函数中可以通过this
访问该类的实例的属性。
xxxxxxxxxx
class App extends React.Component{
onAdd(){
console.log('点击事件发生了')
}
render(){
return <div>
<button onClick={this.onAdd}>点击</button>
</div>
}
}
提示:
在 JavaScript 中,class 的方法默认不会绑定
this
xxxxxxxxxx
class App extends React.Component {
onSum(num1,num2){
return num1+num2
}
onAdd() {
//直接在函数内访问this,是访问不到的,为Undefined
console.log(this)
this.onSum(1,2)
}
render() {
return <div>
<button onClick={this.onAdd}>点击</button>
</div>
}
}
手动绑定函数中this
的指向
方法一:在render函数中绑定
xxxxxxxxxx
class App extends React.Component {
onSum(num1,num2){
return num1+num2
}
onAdd() {
//直接在函数内访问this,是访问不到的
console.log(this)
console.log(this.onSum(1,2))
}
render() {
return <div>
<button onClick={this.onAdd.bind(this)}>点击</button>
</div>
}
}
方法二:在类的构造函数中绑定
xxxxxxxxxx
class App extends React.Component {
constructor(){
super()
//因为在类的构造函数中也可以访问this
this.onAdd=this.onAdd.bind(this)
}
onSum(num1,num2){
return num1+num2
}
onAdd() {
console.log(this)
console.log(this.onSum(1,2))
}
render() {
console.log(this)
return <div>
<button onClick={this.onAdd}>点击</button>
</div>
}
}
方法三:使用箭头函数
xxxxxxxxxx
class App extends React.Component {
onSum(num1,num2){
return num1+num2
}
onAdd=()=> {
console.log(this)
console.log(this.onSum(1,2))
}
render() {
console.log(this)
return <div>
<button onClick={this.onAdd}>点击</button>
</div>
}
}
实时效果反馈
1. 下列哪种事件绑定方式无法获得this:
A <button onClick={ () => this.clickHandle() }>点击</button>
B <button onClick={ this.clickHandle.bind(this) }>点击</button>
C <button onClick={ this.clickHandle }>点击</button>
并且在构造函数中this.clickHandle = this.clickHandle.bind(this);
D <button onClick={ this.clickHandle }>点击</button>
答案
1=>D