【问题标题】:What is the need for a constructor() in es6 JavaScript?es6 JavaScript 中的 constructor() 需要什么?
【发布时间】:2018-07-02 00:13:33
【问题描述】:
在 es6 Javascript 创建组件类时,constructor() 起什么作用?我对此有点陌生,并在尝试学习 React 时跳上了这一点。
【问题讨论】:
标签:
javascript
reactjs
ecmascript-6
【解决方案1】:
在创建对象时调用构造函数。
你应该试试这段代码。它将参数输出到控制台。
class MyObject {
constructor(arg1, arg2) {
console.log(arg1, arg2);
// output arguments
}
}
var myobj = new MyObject("test1", "test2");
【解决方案2】:
在 ReactJs 上下文中:构造函数是第一个为反应组件调用的生命周期方法。可用于初始化状态。
class SomeComp extends Component {
constructor(props) {
super(props);
this.state = {
prop1: "value"
}
}
}
但是,现在使用更新版本的 javascript,您可以直接初始化状态。所以实际上组件中不需要使用构造函数。
class SomeComp extends Component {
state = {
prop1: "value1"
};
}
【解决方案3】:
上面的回答部分正确:
Constructor called when your object is created.
但在 React 堆栈中,因为 React 类是子类,我们还有其他的洞穴热:
如果你有构造函数,总是调用 super(),如果你没有构造函数,不要担心
仅当您想在构造函数中访问 this.props 时才调用 super(props)。如果您想在其他任何地方访问它,React 会自动为您设置它。
如果你想在其他地方使用它,则无需将道具传递给构造函数。因为 React 会自动为你设置好它