ES6创建React组件的绑定方法
在前面的文章,我们说到使用ES6 extends React.Component
这种方式创建的组件,其中的的事件函数句柄不会自动绑定当前实例的 this,我们需要手动绑定 this。
而绑定this的方法主要有两种方法,每种方法又有两种表现形式:
使用 bind
ES5为所有的函数定义了一个原生的 bind() 方法,用户只需要传入特定的环境变量,当函数被调用时,就会在这个特定的环境中执行。使用 bind 绑定this有两种形式,分别是:
使用 bind 形式一:在构造函数内部绑定。
class Login extends React.Component { |
使用 bind 形式二:在事件句柄里绑定。
class Login extends React.Component { |
基于 箭头函数
与普通函数不同,箭头函数本身没有this,它的this指向的是定义它时的上下文环境。所以,当我们创建组件,在其中定义一些事件函数时,它内部的this,就是组件实例。使用 箭头函数 绑定this有两种形式,分别是:
箭头函数形式一:在定义事件方法时使用箭头函数。
class Login extends React.Component { |
箭头函数形式二:在事件句柄中使用箭头函数。
class Login extends React.Component { |
可以看到,使用 “在构造函数内部绑定” 或者 “在定义事件方法时使用箭头函数” 这两种形式的绑定明显好于 “事件句柄” 的两种形式。因为如果存在多个的事件句柄的话,需要多次调用。