类组件中
1.生命周期中的钩子函数中,this指向当前组件的实例
2.在自己声明的函数内部,this指向的是undefined
例如 在组件中声明一个函数go(){}
render中填一个按钮<button onClick={this.go()}>go1</button>
在执行生命周期时会直接执行button中的go(),触发函数,但是触发函数时又会导致重新运行render。最终导致死循环。
直接this.go显示的是undefined
3.render中声明函数,函数中的this指向为undefined,是自己
若生命的是箭头函数,()=>{this},这其中的this指向为render组件实例
4.用.bind改变this指向问题,修改为<button onClick={this.go.bind(this)}>go2</button>
可以执行,但是每次点击时,都会重复声明新的函数,虽然不混乱但是性能较差
5.在constructor一次性绑定go函数,this.go=this.go.bind(this)
//go 函数 =>新的函数 已经绑定this => 赋值给this.go 属性上,这样,render中直接 使用 this.go <button onClick={this.go}>go3</button>就会执行该函数,而不用重复声明。
6.ES7新写法 go=()=>{},直接定义即可实现上述功能,绑定this同时声明一次。