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