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