1.bind,apply,call----为什么不能用apply、call绑定?
原因是:apply,call指向完之后立即执行当前函数,bind是返回一个新的函数
2.区分普通函数与事件处理函数
1) 普通函数是直接调用的。不存在 this 指向问题,谁调用的,this 指向就是谁,并且没有事件对象
2)事件处理函数其实也是一个函数,只是他绑定在某个事件上,this默认指向undefined(在严格模式下)
3.解决this指向的四种方法
1)直接在事件绑定的地方加上 .bind(this)
注意父组件render,子组件一定会render,所以该又会返回一个全新的函数
2)使用一个箭头函数来作为事件处理函数,然后在这个箭头函数中再以普通方式去调用最终的函数
注意父组件render,子组件一定会render,所以该又会返回一个全新的箭头函数
3)在构造函数(constructor)中提前做 bind ---只初始化一次
4)使用 public class filed 新语法。并将函数写成箭头函数的形式。
性能优化:
1. 父组件render,子组件一定会render
为了节省性能,父组件render的时候,如果子组件没有必要更新。那么不应该让子组件render
如何办呢?
1. 自己使用 shouldComponentUpdate() 生命周期的钩子函数
2. 不要写 shouldComponentUpdate .而是让组件继承 一个 PureComponent 基础组件
了解到这种性能优化之后。
在子组件上传递函数时并且不携带参数时,推荐使用哪几种解决 this 指向问题的方案(即上面的方法3,4)
1. 提供 构造函数中 绑定
2. public class filed 新语法的方式