class PlayerControls extends React.Component {
constructor(props) {
super(props)
this.state = {
loopActive: false,
shuffleActive: false,
}
}
render() {
var shuffleClassName = this.state.toggleActive ? "player-control-icon active" : "player-control-icon"
return (
<div className="player-controls">
<FontAwesome
className="player-control-icon"
name='refresh'
onClick={this.onToggleLoop}
spin={this.state.loopActive}
/>
<FontAwesome
className={shuffleClassName}
name='random'
onClick={this.onToggleShuffle}
/>
</div>
);
}
onToggleLoop(event) {
// "this is undefined??" <--- here
this.setState({loopActive: !this.state.loopActive})
this.props.onToggleLoop()
}
我要更新切換loopActive
狀態裏面,但this
對象是在處理不確定的。根據教程文檔,I this
應該引用該組件。我錯過了什麼嗎?陣營:「這個」沒有定義的組件功能
如果您將onClick屬性更改爲'()=> this.onToggleLoop',然後將onToggleLoop函數移動到您的反應類中,它也會起作用。 – Sam
你真的必須綁定每個反應類的每個方法嗎?這不是有點瘋狂嗎? –
@AlexL有許多方法可以在不顯式綁定方法的情況下完成。如果你使用babel,可以將React組件的每個方法聲明爲箭頭函數。這裏有一些例子:https://babeljs.io/blog/2015/06/07/react-on-es6-plus – Ivan