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
Reactjs 如何使状态/道具在子组件之前可供子组件使用';s构造函数执行什么?_Reactjs_Ecmascript 6 - Fatal编程技术网

Reactjs 如何使状态/道具在子组件之前可供子组件使用';s构造函数执行什么?

Reactjs 如何使状态/道具在子组件之前可供子组件使用';s构造函数执行什么?,reactjs,ecmascript-6,Reactjs,Ecmascript 6,我正在React中构建一个实时金融数据应用程序,从状态到子组件获取数据时遇到一些问题。问题的一部分是我每隔几秒钟就拉一次数据,所以数据经常变化 我的组件层次结构是: <App /> <Dashboard /> <Ticker /> <Gold /> 同样在构造函数中,我正在执行ajax请求,以便第一次获取价格 this.fetchGoldPrice(); 然后我将黄金价格对象传递给 updateGoldPrice()

我正在React中构建一个实时金融数据应用程序,从状态到子组件获取数据时遇到一些问题。问题的一部分是我每隔几秒钟就拉一次数据,所以数据经常变化

我的组件层次结构是:

<App />
  <Dashboard />
    <Ticker />
      <Gold />
同样在构造函数中,我正在执行ajax请求,以便第一次获取价格

this.fetchGoldPrice();
然后我将黄金价格对象传递给

updateGoldPrice()
此函数获取对象,提取当前价格和最后收盘价格,并基于这些价格设置布尔值,
goldUp
,然后设置状态

this.setState({ 
  goldPrice: goldPrice,
  goldUp: goldUp
});
这一切都发生在

我该如何解决这个问题


我认为在设置状态之前在
内部进行数组拼接是没有意义的?谢谢。

您必须在应用程序的渲染方法中检查应用程序的状态,并且在您的状态未完成时不要渲染仪表板。此时可以显示加载程序

render(){
   return (
       <div>
          {
             this.state.goldUp!==null ? (
                  <Dashboard />
             ) : (<Loader />)

          }
       </div>
   );

}
render(){
返回(
{
this.state.goldUp!==null(
) : ()
}
);
}

您必须在渲染方法中检查应用程序的状态,并且在状态未完成时不渲染仪表板。此时可以显示加载程序

render(){
   return (
       <div>
          {
             this.state.goldUp!==null ? (
                  <Dashboard />
             ) : (<Loader />)

          }
       </div>
   );

}
render(){
返回(
{
this.state.goldUp!==null(
) : ()
}
);
}

在“同样在构造函数中,我正在执行ajax请求以第一次获取价格”中,您让我迷路了。永远不要在
构造函数中执行ajax请求,也不要在
组件中安装ajax请求!在
componentDidMount
@rehnirt中执行,哦,是的,正如@Sag1v所说,在
componentDidMount
中执行ajax是否更好,这在服务器端渲染中很有意义如果我立即需要数据,为什么在渲染后在componentDidMount中而不是在渲染前在构造函数中获取数据更好?它们似乎都能工作,因为服务器端没有调用
componentDidMount
。没关系,我想你今天不必在意它。你让我迷失在“同样在构造函数中,我正在执行ajax请求,以便第一次获得价格。”。永远不要在
构造函数中执行ajax请求,也不要在
组件中安装ajax请求!在
componentDidMount
@rehnirt中执行,哦,是的,正如@Sag1v所说,在
componentDidMount
中执行ajax是否更好,这在服务器端渲染中很有意义如果我立即需要数据,为什么在渲染后在componentDidMount中而不是在渲染前在构造函数中获取数据更好?它们似乎都能工作,因为服务器端没有调用
componentDidMount
。没关系,我想你今天不必在意。谢谢。这起作用了。这是惯例吗?我这样做对吗?是的,对,谢谢。这起作用了。这是惯例吗?我这样做正确吗?是的,这是正确的方式
render(){
   return (
       <div>
          {
             this.state.goldUp!==null ? (
                  <Dashboard />
             ) : (<Loader />)

          }
       </div>
   );

}