pubload/renderer/createVueApp.ts

31 lines
1016 B
TypeScript

import { createSSRApp, h, shallowRef } from 'vue'
import { setPageContext } from './usePageContext'
import { setData } from './useData'
import type { PageContext } from 'vike/types'
import { objectAssign } from './utils'
// import Layout from './Layout.vue'
export function createVueApp(pageContext: PageContext) {
const pageContextRef = shallowRef(pageContext)
const dataRef = shallowRef(pageContext.data)
const pageRef = shallowRef(pageContext.Page)
// const RootComponent = () => h(Layout, null, () => h(pageRef.value))
const RootComponent = () => h(pageContext.config.Layout, null, () => h(pageRef.value))
const app = createSSRApp(RootComponent)
setPageContext(app, pageContextRef)
setData(app, dataRef)
// app.changePage() is called upon navigation, see +onRenderClient.ts
objectAssign(app, {
changePage: (pageContext: PageContext) => {
pageContextRef.value = pageContext
dataRef.value = pageContext.data
pageRef.value = pageContext.Page
}
})
return app
}