有一个带有X个子组件的父对象。每个组件(包括父组件)执行未知持续时间的异步调用。一旦所有异步调用完成,是否可以协调渲染?
我的问题的简单示例:
理想的解决方案:所有数字同时出现。
我知道我可以将所有异步调用从子级移到父级。我不喜欢的是,我只需要特定孩子中的数据...
我想到了将所有孩子的诺言返回给父母,并在所有诺言得到解决后使用any
来设置布尔值。但是我无法使其工作。这种方法通常是“好主意”吗?还有其他解决方案而无需移动异步调用吗?
更新:
按照@ zero298的要求提供代码示例(请查看CodeSandbox以获取更详细的示例):
Promise.all()
答案 0 :(得分:0)
我建议遵循React最佳实践和lift state up。因此,是的,您应该将所有异步调用移至父级。或者甚至更进一步,用户Redux可以集中管理应用程序的状态。
从技术上讲,您可以将异步调用留在子组件中,并以某种方式对其进行编排。但是,当您的程序变得更大时,管理它就变得困难了,因为数据查询将散布在几乎所有文件中。
和往常一样,一段时间后,仅需要在另一个组件中获取数据,并且采用这种方法,就不可能重复使用数据