反应,如何告诉父组件所有子组件都已完成更新?

时间:2019-05-30 04:59:45

标签: reactjs parent-child

我有一个React应用程序,它接受相当大的订单(我们可以将它们视为来自商店的在线订单)。然后,我接受这些订单并根据各种条件对它们进行排序,并在各种类别(“玩具”,“家居用品”等)中显示它们。

最终结果是这样的:

玩具(2)

  • 订购卡车
  • 订购娃娃

家庭用品(2)

  • 镜子

在代码方面,它就像类别组件一样简单,可以根据需要调用任意数量的订单组件。

类别组件

  • 订单组件
  • 订单组件

每个订单组件还具有一个表单,以便用户可以根据需要更新有关该订单的某些信息。

因为可能存在许多类别(可能是几十个),并且可能有上千个订单,所以直到有人单击并打开类别(否则,反应会减慢尝试呈现所有内容的速度),我才会渲染实际的订单。在实际的订单中,我什至不去渲染表单字段,直到他们选择要更新的特定订单为止。订单的呈现和每个订单内的表单均受某些条件呈现的控制。

因此,此时的性能还是可以接受的。

问题在于,当用户单击打开具有1000个订单的类别时,仍然存在延迟,可能大约需要3到4秒。

我想指出的是,用户单击后就会立即加载一些内容,这样他们就不会感到不耐烦,请全力以赴,然后进行安装和卸载,直到他们的浏览器崩溃为止。就像这样:

-点击-

类别组件-旋转器或其他东西-

- 3到4秒过去-

类别组件-无微调框-

  • 订单组件
  • 订单组件

我已经完成了等待API调用的图标的加载,这样很好,  但是我不确定如何真正表明我们正在等待React完成渲染许多子组件并告诉父组件不再显示微调器?

如果这只是一个父级组件和一个子级组件,我会将一个函数从父级传递给子级,以更新父级中的“嘿,我完成了”状态以停止显示微调器。

但是,如果我将每个1000个以上的函数传递给子级,那么1000个以上的子级将使用该函数更新一个父级父级,那么将状态更新1000次以上似乎是个坏主意。

我考虑过要给孩子传递一个函数,该函数向父对象的数组添加一些内容。就像是“在数组中报告”,它与数组中的内容无关紧要,我只需要检查父级是否“在数组中报告”具有与子项相同的长度...但这也感觉很古怪。

父母是否有更好/更好的方法来了解其孩子的当前状态/是否完成了在DOM上的渲染,或者孩子是否完成了更新?

从长远来看,我有一些引入分页的计划,以及一些其他的削减工作的计划,以减少某个类别中1000多个订单的呈现,但是现在,客户“希望”所有订单立即开放。

0 个答案:

没有答案