【发布时间】:2016-08-10 06:55:13
【问题描述】:
我有一个包含一个父组件和三个子组件的 React 应用程序。在父组件中,我有包含数据的状态并将这些数据在道具中传递给子组件。我也有三个端点,并且必须在父组件的 componentDidMount 函数上发送三个 ajax 请求。如何在 React 中做到这一点?
var Parent = React.createClass({
getInitialState: function(){
return ( {
data1: [],
data2: [],
data3: []
});
},
componentDidMount: function() {
???
???
???
},
render: function(){
return (
<div>
<Child1 data={this.state.data1} />
<Child2 data={this.state.data2} />
<Child3 data={this.state.data3} />
</div>
)
}
})
var Child1 = React.createClass({
render: function() {
return (
<div>
{this.props.data}
</div>
)
}
})
var Child2 = React.createClass({
render: function() {
return (
<div>
{this.props.data}
</div>
)
}
})
var Child3 = React.createClass({
render: function() {
return (
<div>
{this.props.data}
</div>
)
}
})
我想用叠加层“正在加载...”渲染父组件,并在 componentDidMount 上发送 3 个请求,更新状态并将数据作为道具传递给子组件,前提是所有 3 个请求都成功完成,然后渲染/重新渲染这些子组件。如果一个请求有问题,我不想渲染任何子组件(正在加载...一直持续到成功)。异步还是前一个请求成功?
提前致谢。
【问题讨论】:
-
显示为您的代码..
-
你可以使用例如这个库:caolan.github.io/async
-
您可以进行嵌套的 ajax 调用。
call1.success(call2.success(call3.success(setState))) -
如果您正在寻找并行性。
successCount = 0; call1.success(successCount++); if (successCount === 3) setState(); -
我正在寻找并行性,但为了使此功能有效,我想同时处理所有请求。
标签: javascript reactjs