ES7 新增类功能 2:箭头函数的类方法自动绑定 this
ES 6 中类方法需要绑定 this,即需要到 constructor() 中去调用 .bind(this) 才能用 this. 来调用,或者在调用处去绑定。
比如:实现一个点击标题,改变标题文字内容的功能的方法。ES 6 需要在 constructor 中绑定 this:
class App extends Component {
constructor() {
super()
this.changeTitle = this.changeTitle.bind(this);
}
state = {
title: 'Hello from outside'
};
changeTitle() {
this.setState({ title: 'changed' })
}
render() {
return (
<div>
<h1 onClick={this.changeTitle}>Title - {this.state.title}</h1>
</div>
);
}
}
或者调用处去绑定 this:
class App extends Component {
state = {
title: 'Hello from outside'
};
changeTitle() {
this.setState({ title: 'changed' })
}
render() {
return (
<div>
<h1 onClick={this.changeTitle.bind(this)}>Title - {this.state.title}</h1>
</div>
);
}
}
ES 7 的方法
箭头函数赋值到变量上,就可以不用绑定 this。帮上面代码更改以后就是:
class App extends Component {
state = {
title: 'Hello from outside'
};
changeTitle = () => {
this.setState({ title: 'changed' })
}
render() {
return (
<div>
<h1 onClick={this.changeTitle}>Title - {this.state.title}</h1>
</div>
);
}
}