我有一个React应用程序,它接受相当大的订单(我们可以将它们视为来自商店的在线订单)。然后,我接受这些订单并根据各种条件对它们进行排序,并在各种类别(“玩具”,“家居用品”等)中显示它们。
最终结果是这样的:
玩具(2)
家庭用品(2)
在代码方面,它就像类别组件一样简单,可以根据需要调用任意数量的订单组件。
类别组件
每个订单组件还具有一个表单,以便用户可以根据需要更新有关该订单的某些信息。
因为可能存在许多类别(可能是几十个),并且可能有上千个订单,所以直到有人单击并打开类别(否则,反应会减慢尝试呈现所有内容的速度),我才会渲染实际的订单。在实际的订单中,我什至不去渲染表单字段,直到他们选择要更新的特定订单为止。订单的呈现和每个订单内的表单均受某些条件呈现的控制。
因此,此时的性能还是可以接受的。
问题在于,当用户单击打开具有1000个订单的类别时,仍然存在延迟,可能大约需要3到4秒。
我想指出的是,用户单击后就会立即加载一些内容,这样他们就不会感到不耐烦,请全力以赴,然后进行安装和卸载,直到他们的浏览器崩溃为止。就像这样:
-点击-
类别组件-旋转器或其他东西-
- 3到4秒过去-
类别组件-无微调框-
我已经完成了等待API调用的图标的加载,这样很好, 但是我不确定如何真正表明我们正在等待React完成渲染许多子组件并告诉父组件不再显示微调器?
如果这只是一个父级组件和一个子级组件,我会将一个函数从父级传递给子级,以更新父级中的“嘿,我完成了”状态以停止显示微调器。
但是,如果我将每个1000个以上的函数传递给子级,那么1000个以上的子级将使用该函数更新一个父级父级,那么将状态更新1000次以上似乎是个坏主意。
我考虑过要给孩子传递一个函数,该函数向父对象的数组添加一些内容。就像是“在数组中报告”,它与数组中的内容无关紧要,我只需要检查父级是否“在数组中报告”具有与子项相同的长度...但这也感觉很古怪。
父母是否有更好/更好的方法来了解其孩子的当前状态/是否完成了在DOM上的渲染,或者孩子是否完成了更新?
从长远来看,我有一些引入分页的计划,以及一些其他的削减工作的计划,以减少某个类别中1000多个订单的呈现,但是现在,客户“希望”所有订单立即开放。