求助:关于在react发送ajax请求的问题

#1

先描述一下我遇到的情况:
现在有一个父组件Parent,有很多个“并列”的子组件Child1、Child2、Child3…
所有Child的数据都要通过ajax获取。

我的做法是,在父组件的ComponentDidMount周期中发送一次ajax请求,然后把返回的数据通过props传递给子组件
这样做会遇到一个问题,无法确定ajax请求会在Child挂载之前返回或者在挂载之后返回

如果在挂载之后返回的话,还需要在Child的ComponentWillReceiveProps周期中SetState一次,而如果在挂载之前返回的话则不需要SetState了。
(根据我在本地服务器的测试,是在子组件挂载之前ajax就返回)

我想请问我的这种做法正确吗?如果是你又会怎么处理呢?
谢谢!

#2

直接用props渲染子组件

function Welcome(props) {
  return 

Hello, {props.name}

; }
1 Like
#3

ComponentDidMount 是在 Child 挂载之后才会执行的…你怎么测试的

1 Like
#4

谢谢楼上的建议,我的问题已经解决了。

我在父组件中用了 for i in data 来渲染子组件,其中data是ajax返回的数据,当第一次挂载的时候,由于data初始值是{},所以for i in data也就没有实际渲染子组件。当ajax返回后,再次SetState时,才会渲染子组件。

所以造成了我认为ajax请求返回之后再渲染子组件的误区。

#5

直接用map把渲染写在jsx里,不要另写方法用for循环return