Skip to content

Commit

Permalink
fix(runtime-core): should not warn out-of-render slot fn usage when m…
Browse files Browse the repository at this point in the history
…ounting another app in setup (#10125)

close #10124
  • Loading branch information
inottn authored Jan 18, 2024
1 parent 81d307a commit 6fa33e6
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 1 deletion.
29 changes: 29 additions & 0 deletions packages/runtime-core/__tests__/componentSlots.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {
createApp,
getCurrentInstance,
h,
nextTick,
Expand Down Expand Up @@ -240,4 +241,32 @@ describe('component: slots', () => {
await nextTick()
expect(spy).toHaveBeenCalledTimes(2)
})

test('should not warn when mounting another app in setup', () => {
const Comp = {
setup(_: any, { slots }: any) {
return () => slots.default?.()
},
}

const mountComp = () => {
createApp({
setup() {
return () => h(Comp, () => 'msg')
},
}).mount(nodeOps.createElement('div'))
}

const App = {
setup() {
mountComp()
return () => null
},
}

createApp(App).mount(nodeOps.createElement('div'))
expect(
'Slot "default" invoked outside of the render function',
).not.toHaveBeenWarned()
})
})
6 changes: 5 additions & 1 deletion packages/runtime-core/src/componentSlots.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,11 @@ const normalizeSlot = (
return rawSlot as Slot
}
const normalized = withCtx((...args: any[]) => {
if (__DEV__ && currentInstance) {
if (
__DEV__ &&
currentInstance &&
(!ctx || ctx.root === currentInstance.root)
) {
warn(
`Slot "${key}" invoked outside of the render function: ` +
`this will not track dependencies used in the slot. ` +
Expand Down

0 comments on commit 6fa33e6

Please sign in to comment.