createCommentVNode,
withScopeId,
resolveComponent,
- ComponentOptions
+ ComponentOptions,
+ ref,
+ defineComponent
} from 'vue'
import { escapeHtml, mockWarn } from '@vue/shared'
import { renderToString, renderComponent } from '../src/renderToString'
).toBe(`<div>hello</div>`)
})
+ test('option components returning render from setup', async () => {
+ expect(
+ await renderToString(
+ createApp({
+ setup() {
+ const msg = ref('hello')
+ return () => h('div', msg.value)
+ }
+ })
+ )
+ ).toBe(`<div>hello</div>`)
+ })
+
+ test('setup components returning render from setup', async () => {
+ expect(
+ await renderToString(
+ createApp(
+ defineComponent((props: {}) => {
+ const msg = ref('hello')
+ return () => h('div', msg.value)
+ })
+ )
+ )
+ ).toBe(`<div>hello</div>`)
+ })
+
test('optimized components', async () => {
expect(
await renderToString(
if (isFunction(comp)) {
renderVNode(push, renderComponentRoot(instance), instance)
} else {
- if (!comp.ssrRender && !comp.render && isString(comp.template)) {
+ if (!instance.render && !comp.ssrRender && isString(comp.template)) {
comp.ssrRender = ssrCompile(comp.template, instance)
}
setCurrentRenderingInstance(instance)
comp.ssrRender(instance.proxy, push, instance)
setCurrentRenderingInstance(null)
- } else if (comp.render) {
+ } else if (instance.render) {
renderVNode(push, renderComponentRoot(instance), instance)
} else {
throw new Error(