Skip to content

Commit 6e50798

Browse files
Dependency Injection Inheritance: Solution A
1 parent b555f02 commit 6e50798

File tree

2 files changed

+2
-12
lines changed

2 files changed

+2
-12
lines changed

packages/runtime-core/src/apiInject.ts

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,7 @@ export function provide<T, K = InjectionKey<T> | string | number>(
1616
warn(`provide() can only be used inside setup().`)
1717
}
1818
} else {
19-
let provides = currentInstance.provides
20-
// by default an instance inherits its parent's provides object
21-
// but when it needs to provide values of its own, it creates its
22-
// own provides object using parent provides object as prototype.
23-
// this way in `inject` we can simply look up injections from direct
24-
// parent and let the prototype chain do the work.
25-
const parentProvides =
26-
currentInstance.parent && currentInstance.parent.provides
27-
if (parentProvides === provides) {
28-
provides = currentInstance.provides = Object.create(parentProvides)
29-
}
19+
const provides = currentInstance.provides
3020
// TS doesn't allow symbol as index type
3121
provides[key as string] = value
3222
}

packages/runtime-core/src/component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -633,7 +633,7 @@ export function createComponentInstance(
633633
exposeProxy: null,
634634
withProxy: null,
635635

636-
provides: parent ? parent.provides : Object.create(appContext.provides),
636+
provides: parent ? Object.create(parent.provides) : Object.create(appContext.provides),
637637
ids: parent ? parent.ids : ['', 0, 0],
638638
accessCache: null!,
639639
renderCache: [],

0 commit comments

Comments
 (0)