import Vue from '../../../dist/vue.runtime.common.js' function createRegisterFn (id) { return function (context) { context = context || this.$vnode.ssrContext context.registered.push(id) } } function addHooks (comp) { const hook = createRegisterFn(comp.name) return Object.assign(comp, { _ssrRegister: hook, beforeCreate: hook }) } const grandchild = addHooks({ name: 'grandchild', props: ['id'], serverCacheKey: props => props.id, render (h) { return h('div', '/test') } }) const child = addHooks({ name: 'child', props: ['id'], serverCacheKey: props => props.id, render (h) { return h(grandchild, { props: { id: this.id }}) } }) const app = addHooks({ name: 'app', props: ['id'], serverCacheKey: props => props.id, render (h) { return h(child, { props: { id: this.id }}) } }) export default () => { return Promise.resolve(new Vue({ render: h => h(app, { props: { id: 1 }}) })) }