更新:登录功能
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import {
|
||||
ref,
|
||||
inject,
|
||||
computed,
|
||||
onUnmounted,
|
||||
type InjectionKey,
|
||||
getCurrentInstance,
|
||||
type ComponentPublicInstance,
|
||||
type ComponentInternalInstance
|
||||
} from 'vue'
|
||||
|
||||
type ParentProvide<T> = T & {
|
||||
link(child: ComponentInternalInstance): void
|
||||
unlink(child: ComponentInternalInstance): void
|
||||
children: ComponentPublicInstance[]
|
||||
internalChildren: ComponentInternalInstance[]
|
||||
}
|
||||
|
||||
export function useParent<T>(key: InjectionKey<ParentProvide<T>>) {
|
||||
const parent = inject(key, null)
|
||||
|
||||
if (parent) {
|
||||
const instance = getCurrentInstance()!
|
||||
const { link, unlink, internalChildren } = parent
|
||||
|
||||
link(instance)
|
||||
onUnmounted(() => unlink(instance))
|
||||
|
||||
const index = computed(() => internalChildren.indexOf(instance))
|
||||
|
||||
return {
|
||||
parent,
|
||||
index
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
parent: null,
|
||||
index: ref(-1)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user