mirror of https://github.com/vuejs/core.git
parent
8e6c337867
commit
bf3d9a2af4
|
@ -400,6 +400,7 @@ import { renderComponentRoot } from './componentRenderUtils'
|
|||
import { setCurrentRenderingInstance } from './componentRenderContext'
|
||||
import { isVNode, normalizeVNode } from './vnode'
|
||||
import { ensureValidVNode } from './helpers/renderSlot'
|
||||
import { popWarningContext, pushWarningContext } from './warning'
|
||||
|
||||
const _ssrUtils: {
|
||||
createComponentInstance: typeof createComponentInstance
|
||||
|
@ -410,6 +411,8 @@ const _ssrUtils: {
|
|||
normalizeVNode: typeof normalizeVNode
|
||||
getComponentPublicInstance: typeof getComponentPublicInstance
|
||||
ensureValidVNode: typeof ensureValidVNode
|
||||
pushWarningContext: typeof pushWarningContext
|
||||
popWarningContext: typeof popWarningContext
|
||||
} = {
|
||||
createComponentInstance,
|
||||
setupComponent,
|
||||
|
@ -419,6 +422,8 @@ const _ssrUtils: {
|
|||
normalizeVNode,
|
||||
getComponentPublicInstance,
|
||||
ensureValidVNode,
|
||||
pushWarningContext,
|
||||
popWarningContext,
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -81,6 +81,18 @@ function testRender(type: string, render: typeof renderToString) {
|
|||
expect(html).toBe(`<div>foo</div>`)
|
||||
})
|
||||
|
||||
test('warnings should be suppressed by app.config.warnHandler', async () => {
|
||||
const app = createApp({
|
||||
render() {
|
||||
return h('div', this.foo)
|
||||
},
|
||||
})
|
||||
app.config.warnHandler = vi.fn()
|
||||
await render(app)
|
||||
expect('not defined on instance').not.toHaveBeenWarned()
|
||||
expect(app.config.warnHandler).toHaveBeenCalledTimes(1)
|
||||
})
|
||||
|
||||
describe('components', () => {
|
||||
test('vnode components', async () => {
|
||||
expect(
|
||||
|
|
|
@ -35,6 +35,8 @@ const {
|
|||
setupComponent,
|
||||
renderComponentRoot,
|
||||
normalizeVNode,
|
||||
pushWarningContext,
|
||||
popWarningContext,
|
||||
} = ssrUtils
|
||||
|
||||
export type SSRBuffer = SSRBufferItem[] & { hasAsync?: boolean }
|
||||
|
@ -91,8 +93,14 @@ export function renderComponentVNode(
|
|||
parentComponent: ComponentInternalInstance | null = null,
|
||||
slotScopeId?: string,
|
||||
): SSRBuffer | Promise<SSRBuffer> {
|
||||
const instance = createComponentInstance(vnode, parentComponent, null)
|
||||
const instance = (vnode.component = createComponentInstance(
|
||||
vnode,
|
||||
parentComponent,
|
||||
null,
|
||||
))
|
||||
if (__DEV__) pushWarningContext(vnode)
|
||||
const res = setupComponent(instance, true /* isSSR */)
|
||||
if (__DEV__) popWarningContext()
|
||||
const hasAsyncSetup = isPromise(res)
|
||||
let prefetches = instance.sp /* LifecycleHooks.SERVER_PREFETCH */
|
||||
if (hasAsyncSetup || prefetches) {
|
||||
|
@ -118,6 +126,7 @@ function renderComponentSubTree(
|
|||
instance: ComponentInternalInstance,
|
||||
slotScopeId?: string,
|
||||
): SSRBuffer | Promise<SSRBuffer> {
|
||||
if (__DEV__) pushWarningContext(instance.vnode)
|
||||
const comp = instance.type as Component
|
||||
const { getBuffer, push } = createBuffer()
|
||||
if (isFunction(comp)) {
|
||||
|
@ -207,6 +216,7 @@ function renderComponentSubTree(
|
|||
push(`<!---->`)
|
||||
}
|
||||
}
|
||||
if (__DEV__) popWarningContext()
|
||||
return getBuffer()
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue