import {
+ createApp,
getCurrentInstance,
h,
nextTick,
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()
+ })
})
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. ` +