在reactjs.org发布的the tutorial中,有人指出“类组件应始终使用props
调用基本构造函数”。根据{{3}},在我自己的研究中,如果在构造函数中未使用super(props)
,似乎super()
可以用this.props
代替。
因此,我的问题是,为什么我们总是将props
传递给reactjs中的基本构造函数?建议是正确的吗?为什么听起来(或不听起来)建议?
P.S。屏幕截图会上传到该问题,以防万一在回答该问题时更新了原始教程。
答案 0 :(得分:4)
尽管建议将道具传递给
super
,但并非如此 绝对必要。
通过它只会在一个奇怪的情况下有所帮助,在这种情况下,您可能在构造函数中有一个称为方法的方法,然后在将来的某个时间点决定在其中使用道具。现在,由于尚未将道具传递给super
,因此构造函数中没有道具,这将导致错误。这种情况可能很难调试,因此建议您始终在编写构造函数时始终传递道具,以确保即使在构造函数退出之前也已设置this.props
。
答案 1 :(得分:0)
这是因为您正在初始化父组件React.Component
,例如this.props
将不确定。您可以在反应工程师
答案 2 :(得分:0)
由于Clock类扩展了React.Component,因此您可以访问React.Component的所有属性和方法。
通过调用super,您实际上是在使用props参数调用父元素
如果打算在构造函数中使用this.props,则必须调用super(props)
答案 3 :(得分:0)
简单来说,它用于调用父类构造函数,这是非常必要的,当调用 super()时,它实际上会调用父类构造函数,并且在
ES 类的构造函数必须具有super()
作为其子类,并且super()
仅在显式具有构造函数时才需要。
Super()不需要
class TestApp extends React.component{
render(){
return <div>I don't need a super()</div>
}
}
Super()必需
class TestApp extends React.component{
constructor(){
super(); // here super is required becuase it calls the parent class constructor //
}
render(){
return <div>I don't need a super()</div>
}
}
您还可以使用super()
将道具super(props)
传递给父类,在这种情况下,props
可以通过this.props
在各个组件之间进行访问。
答案 4 :(得分:0)
在JavaScript中,super是指父类的构造函数。
我们为什么称其为super?我们不能叫它吗?如果必须调用它,如果不传递道具怎么办?还有其他论点吗?
阅读下面链接的文章,以获取上述问题的答案。