wip: network idle based delayed component

This commit is contained in:
Michael Brevard 2024-04-10 10:00:38 +03:00 committed by GitHub
parent 817c3ace86
commit 503b560d9b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -29,3 +29,28 @@ export const createLazyIOClientPage = (componentLoader: Component) => {
},
})
}
/* @__NO_SIDE_EFFECTS__ */
export const createLazyNetworkClientPage = (componentLoader: Component) => {
return defineComponent({
inheritAttrs: false,
setup (_, { attrs }) {
const isIdle = ref(false)
let idleHandle: number | null = null
onMounted(() => {
idleHandle = requestIdleCallback(() => {
isIdle.value = true
cancelIdleCallback(idleHandle)
idleHandle = null
})
})
onBeforeUnmount(() => {
if (idleHandle) {
cancelIdleCallback(idleHandle)
idleHandle = null
}
})
return () => isIdle.value ? h(componentLoader, attrs) : null,
},
})
}