this指向问题:用箭头函数替代函数绑定,好像效果也一样,还省敲了函数绑定的代码
来源:2-4 自由编程
Raznov
2020-03-20 00:39:56
import React, { Component, Fragment } from 'react'
class Counter extends Component {
constructor(props) {
super(props)
this.state = {
number: 1
}
// this.add2 = this.add2.bind(this)
}
// add2() {
// let number = this.state.number
// number += 2
// this.setState({ number })
// }
// 箭头函数的this指向父作用域
add2 = () => {
let number = this.state.number
number += 2
this.setState({ number })
}
render() {
return (
<Fragment>
<button onClick={this.add2}>点击,数字+2</button>
<p>{this.state.number}</p>
</Fragment>
)
}
}
export default Counter那么用箭头函数可以完美替代函数绑定吗?二者在渲染、性能上应该没有什么差别吧?
1回答
同学你好,虽然结果上实现了。但是两种定义方式还是有区别的:
1、普通方式中输出this看看

普通函数被定义为类的原型方法,通过function创建的原型方法:

2、箭头函数定义的方式输出this看看

箭头函数被定义为类的实例方法,通过箭头方法创建的实例方法

一般推荐将方法定义在原型上,所以使用普通函数定义的方式就好。
祝学习愉快!
相似问题
回答 1
回答 2