0
在這裏這個例子中,我們需要handleClick()的「這個」對象綁定到全局範圍:爲什麼我們需要綁定「這」的JSX回調
class Toggle extends React.Component {
constructor(props) {
super(props);
this.state = {isToggleOn: true};
// This binding is necessary to make `this` work in the callback
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState(prevState => ({
isToggleOn: !prevState.isToggleOn
}));
}
render() {
return (
<button onClick={this.handleClick}>
{this.state.isToggleOn ? 'ON' : 'OFF'}
</button>
);
}
}
然而,handleClick()是在組件的範圍內定義的,所以我們不應該不需要爲這個函數指定'this'對象,因爲它已經可以引用組件本身了?
因爲什麼'this'是在事件處理程序(通常調度該事件的對象 - 在你的代碼,它會是'button'元素) –
同樣,你的代碼會導致'isToggleOn'最初爲'true',然後是''ON''或'OFF'' - 因此,總是「truthy」 - 看起來很奇怪 –