【发布时间】:2018-04-08 02:09:30
【问题描述】:
我是 react 新手,我注意到我们使用 this.setState() 而不是 super.setState() 请我需要清楚地解释为什么我们使用它来调用超类方法?
示例:
class Checkbox extends React.Component {
constructor(props) {
super(props)
this.state = {
checked: true
}
this.handleCheck = this.handleCheck.bind(this)
}
handleCheck() {
this.setState({
checked: !this.state.checked
})
}
render() {
var msg
if(this.state.checked) {
msg = "checked"
} else {
msg = "not checked"
}
return (
<div>
<input type="checkbox"
onChange={this.handleCheck}
defaultChecked={this.state.checked}/>
<p>This box is {msg}</p>
</div>
)
}
}
【问题讨论】:
-
因为它继承了超类的方法。
-
所以我们从 super 继承的所有东西都可以使用 this 来调用它们?
-
只要您不通过在组件中实现该方法来覆盖它(这从来都不是问题,因为您只实现了您自己不应该直接调用的生命周期方法)。
-
继承。你只需要在 React 类构造函数中使用
super关键字就可以在构造函数中使用this关键字。您可以使用它来访问父类上的方法,但没有必要。
标签: javascript reactjs ecmascript-6