你可以將它放入一個可組合項中,該項目提供了一個處理提供的函數(shù)provde和一個處理注入的函數(shù)use*:
const CurrentDocumentSetKey = Symbol() as InjectionKey<{ documentSet: Ref<DocumentSet>, update: () => void }> export function provideCurrentDocumentSet(documentSet:DocumentSet, update: () => any){ provide(CurrentDocumentSetKey, {documentSet, update}) } export useCurrentDocumentSet(){ const ds = inject(CurrentDocumentSetKey) if (!ds) throw new Error('No current DocumentSet provided') return ds }
現(xiàn)在你只需要在父元件中呼叫provideCurrentDocumentSet()
,所有子元件只需要執(zhí)行以下操作:
const {documentSet, update} = useCurrentDocumentSet()
你甚至不需要匯出InjectionKey,元件也不需要知道它。 (例如Vuetify也是這樣做的,例如這裡)