在渲染之前等待几个组件的异步调用

时间:2019-05-01 08:16:29

标签: reactjs

有一个带有X个子组件的父对象。每个组件(包括父组件)执行未知持续时间的异步调用。一旦所有异步调用完成,是否可以协调渲染?

我的问题的简单示例:

Edit 9oz700rvmp

理想的解决方案:所有数字同时出现。

我知道我可以将所有异步调用从子级移到父级。我不喜欢的是,我只需要特定孩子中的数据...

我想到了将所有孩子的诺言返回给父母,并在所有诺言得到解决后使用any来设置布尔值。但是我无法使其工作。这种方法通常是“好主意”吗?还有其他解决方案而无需移动异步调用吗?

更新

按照@ zero298的要求提供代码示例(请查看CodeSandbox以获取更详细的示例):

Promise.all()

1 个答案:

答案 0 :(得分:0)

我建议遵循React最佳实践和lift state up。因此,是的,您应该将所有异步调用移至父级。或者甚至更进一步,用户Redux可以集中管理应用程序的状态。

从技术上讲,您可以将异步调用留在子组件中,并以某种方式对其进行编排。但是,当您的程序变得更大时,管理它就变得困难了,因为数据查询将散布在几乎所有文件中。

和往常一样,一段时间后,仅需要在另一个组件中获取数据,并且采用这种方法,就不可能重复使用数据