Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在构造函数中获取数据_Javascript_Reactjs - Fatal编程技术网

Javascript 在构造函数中获取数据

Javascript 在构造函数中获取数据,javascript,reactjs,Javascript,Reactjs,在javascript类构造函数()中获取数据是一种很好的做法吗 例如,在react类构造函数()中,我在componendddimount()中找到的每个教程都会获取数据,但没有人解释为什么我们不能在构造函数()中这样做 这个问题涉及javascript类,而不仅仅是react 在安装组件之前调用构造函数(如#Constructor doc:中所述) 为了回答您的问题,解释在于react组件的生命周期以及在状态更改时重新绘制的需要。通过在构造函数中执行异步调用,可以在装入组件之前触发setSt

在javascript类
构造函数()
中获取数据是一种很好的做法吗

例如,在react类
构造函数()
中,我在
componendddimount()
中找到的每个教程都会获取数据,但没有人解释为什么我们不能在
构造函数()
中这样做


这个问题涉及javascript类,而不仅仅是
react

在安装组件之前调用构造函数(如#Constructor doc:中所述)

为了回答您的问题,解释在于react组件的生命周期以及在状态更改时重新绘制的需要。通过在构造函数中执行异步调用,可以在装入组件之前触发setState

在构造函数中执行异步调用会影响重新呈现,如果在构造函数中调用setState,组件有时不会重新呈现

从文件:

不应在构造函数()中调用setState()。相反,如果组件需要使用本地状态,请直接在构造函数中将初始状态分配给this.state:

避免在构造函数中引入任何副作用或订阅。对于这些用例,请改用componentDidMount()


类构造函数是一个函数,只有当函数在DOM中第一次初始化时才会被调用。 在普通的语言行为中,只有当我们使用new关键字实例化一个类时,它的构造函数才会被调用。 现在,如果我们在Javascript类构造函数中获取数据:

  • 如果获取的数据负责交互,则会做出反应 对于DOM(UI),它将失败,因为DOM只有在组件完成后才能准备好 安装,由componentDidMount保证

  • 当只调用一次组件重新呈现为构造函数时,也不会调用数据获取函数,因此UI(DOM)的数据不会更新

  • 构造函数通常用于默认值赋值和声明类相关属性。

    。 它们主要是Javascript基于原型的继承的语法糖。React有一个
    组件的类类型
    ,它与生命周期方法和其他一些好东西一起提供,您可以阅读更多


    一般来说,在生命周期方法
    componentDidMount
    中获取数据是最佳做法。在检索数据之后,组件需要一个放置数据的位置,并且在调用此生命周期方法时,可以确保至少调用了一次
    render()

    componentDidMount
    更好,原因有很多。例如,构造函数将在服务器端呈现中运行,但
    componentDidMount
    不会。