fix(ssr): respect render function from extends/mixins in ssr (#3006)
fix #3004
This commit is contained in:
@@ -99,6 +99,46 @@ function testRender(type: string, render: typeof renderToString) {
|
||||
).toBe(`<div>hello</div>`)
|
||||
})
|
||||
|
||||
test('components using defineComponent with extends option', async () => {
|
||||
expect(
|
||||
await render(
|
||||
createApp(
|
||||
defineComponent({
|
||||
extends: {
|
||||
data() {
|
||||
return { msg: 'hello' }
|
||||
},
|
||||
render(this: any) {
|
||||
return h('div', this.msg)
|
||||
}
|
||||
}
|
||||
})
|
||||
)
|
||||
)
|
||||
).toBe(`<div>hello</div>`)
|
||||
})
|
||||
|
||||
test('components using defineComponent with mixins option', async () => {
|
||||
expect(
|
||||
await render(
|
||||
createApp(
|
||||
defineComponent({
|
||||
mixins: [
|
||||
{
|
||||
data() {
|
||||
return { msg: 'hello' }
|
||||
},
|
||||
render(this: any) {
|
||||
return h('div', this.msg)
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
)
|
||||
)
|
||||
).toBe(`<div>hello</div>`)
|
||||
})
|
||||
|
||||
test('optimized components', async () => {
|
||||
expect(
|
||||
await render(
|
||||
|
||||
@@ -22,7 +22,8 @@ import {
|
||||
isString,
|
||||
isVoidTag,
|
||||
ShapeFlags,
|
||||
isArray
|
||||
isArray,
|
||||
NOOP
|
||||
} from '@vue/shared'
|
||||
import { ssrRenderAttrs } from './helpers/ssrRenderAttrs'
|
||||
import { ssrCompile } from './helpers/ssrCompile'
|
||||
@@ -118,7 +119,7 @@ function renderComponentSubTree(
|
||||
)
|
||||
} else {
|
||||
if (
|
||||
!instance.render &&
|
||||
(!instance.render || instance.render === NOOP) &&
|
||||
!instance.ssrRender &&
|
||||
!comp.ssrRender &&
|
||||
isString(comp.template)
|
||||
@@ -155,7 +156,7 @@ function renderComponentSubTree(
|
||||
instance.ctx
|
||||
)
|
||||
setCurrentRenderingInstance(null)
|
||||
} else if (instance.render) {
|
||||
} else if (instance.render && instance.render !== NOOP) {
|
||||
renderVNode(
|
||||
push,
|
||||
(instance.subTree = renderComponentRoot(instance)),
|
||||
|
||||
Reference in New Issue
Block a user