【发布时间】:2021-09-04 08:40:42
【问题描述】:
在页面组件中我有 fetch 并且我已经在我的嵌套组件中进行了 fetch,有没有办法知道所有组件何时完成它们的 fetch 以显示加载器,现在 我在每个组件中发出 isInitialized 并使我的页面组件 v-show 为 false,直到我得到所有我所做的发出
【问题讨论】:
-
嗨,我昨天更新了我的答案,但忘了给你回电话。希望对您有所帮助。
标签: nuxt.js
在页面组件中我有 fetch 并且我已经在我的嵌套组件中进行了 fetch,有没有办法知道所有组件何时完成它们的 fetch 以显示加载器,现在 我在每个组件中发出 isInitialized 并使我的页面组件 v-show 为 false,直到我得到所有我所做的发出
【问题讨论】:
标签: nuxt.js
不确定,但也许顶部的 $fetchState.pending 能够检测到每个嵌套组件都已完成获取。
https://nuxtjs.org/docs/2.x/components-glossary/pages-fetch/
在 cmets 上进行编辑。this.$children 如果您将其放在按钮 @click 上可能会正常工作。同时,如果您打算在其他地方使用它,例如在生命周期挂钩中,它开始变得有点棘手。
这就是它的工作原理(参考:https://stackoverflow.com/a/44319825/8816585):
如果您计划使用 mounted() 生命周期,使用 @hook:mounted 也很有帮助。
TL;DR:如您所见,这类事情处理起来相当棘手。
【讨论】:
$vm0.$children,这将列出你所有的组件。如果您选择带有$vm0.$children[13].$fetchState.pending 之类的特定组件,您将能够查看它是否有结束的fetch() 挂钩。所以,对于你的问题,你可以列出你父母的所有孩子,看看它是否有一个 fetch() 钩子,如果有,检查它是否完成。一些递归也应该能够提供帮助。另一种解决方案是让您的数据在全球范围内获取并以这种方式进行跟踪,这要容易得多。