当前位置: 首页 > 面试题库 >

构造函数与componentWillMount相比,哪种初始化更合适?

周弘盛
2023-03-14
问题内容

如果我有一个需要进行一些设置的React组件(例如,用于计时器或WebAudio
API等),则在确定初始化应该输入constructor还是时遇到了麻烦componentWillMount。两者都有优点或缺点吗?对我来说,尚不清楚哪个是更好的选择。

我在Google上搜索了一下,看看是否有人讨论了constructor和之间的区别,componentWillMount但是我什么也没找到。

编辑:Redux和任何异步函数不应该成为方程式的一部分。


问题答案:

通常,this.state如果组件是有状态的,那么在构造函数中唯一要做的就是分配初始值。您不应在构造函数中执行任何其他操作。

componentWillMount通常是不必要的。我会说在大多数情况下,它的使用是反模式。人们使用它的原因之一是在渲染之前最后一次从外部源更新状态,但从技术上讲,在构造函数中进行分配是等效的。它提供的唯一的次要便利是您可以setState在其内部,但不能在构造函数中。

对于任何副作用(数据获取或DOM操作),您应使用componentDidMount



 类似资料:
  • 问题内容: 在Java中,但是在其他OO语言中,初始化属性定义之间也有区别,例如 并使用构造函数对其进行初始化? 我想不出任何实际的区别,有没有?否则,即使结果相同,是否存在一种方法优于另一种方法的情况? 问题答案: 初始化顺序在这里很重要。 将字段设置为默认初始值(0,false,null) 调用对象的构造函数(但不要执行构造函数的主体) 调用超类的构造函数 使用初始化程序和初始化块初始化字段

  • 问题内容: 我有两个班,第一个是我的主班,第二个是我的编辑框架班。 我的第二个类(UpdateGUI)在其构造函数中提供oldName,并对其进行编辑,当我单击时,它将newName发送给我的第一个类。 我的第二堂课: 我的问题是,为什么newName为null? 更新: UpdateGUIDialog类: 输出: 我需要打印而不是null。 问题答案: Java对象有点像真实对象。并顾名思义:它

  • 主要内容:初始化 const 成员变量构造函数的一项重要功能是对成员变量进行初始化,为了达到这个目的,可以在构造函数的函数体中对成员变量一一赋值,还可以采用 初始化列表。 C++构造函数的初始化列表使得代码更加简洁,请看下面的例子: 运行结果: 小明的年龄是15,成绩是92.5 李华的年龄是16,成绩是96 如本例所示,定义构造函数时并没有在函数体中对成员变量一一赋值,其函数体为空(当然也可以有其他语句),而是在函数首部与函数体之间添

  • 映射对构造函数没有限制或要求 (__init__ )类的方法。您可以自由地为您想要的函数要求任何参数,为ORM未知的实例分配属性,并且通常在编写Python类的构造函数时做您通常会做的任何其他事情。 sqlAlchemy ORM不调用 __init__ 从数据库行重新创建对象时。ORM的过程有点类似于Python标准库的 pickle 模块,调用低级 __new__ 方法,然后在实例上悄悄地恢复属

  • 生成类对象时,其成员可以用类的构造函数初始化。构造函数是与类同名的成员函数。程序员提供的构造函数在每次生成类对象(实例化)时自动调用。构造函数可以重载.提供初始化类对象的不同方法。数据成员应在类的构造函数中初始化或在生成对象之后设置其数值。 常见编程错误 6.7 类的数据成员只能在类定义中初始化。 常见编程错误 6.8 试图声明构造函数的返回类型和返回植是个语法错误。 编程技巧 6.5 适当时候(

  • 问题内容: 在React组件中,最好是在Constructor()或componentWillMount()中设置初始状态? 要么 问题答案: 使用ES6类时,最好在构造函数中使用,但不要使用API,而是这样做: 另外,如果您有可用的类属性(Bab期1),则可以执行以下操作: