wip: Add keep-alive prop to <nuxt/> and <nuxt-child/>

This commit is contained in:
Sébastien Chopin 2018-01-17 09:39:34 +01:00
parent 93f3082c43
commit 1ea0a9a6f2
2 changed files with 14 additions and 6 deletions

View File

@ -1,7 +1,8 @@
export default { export default {
name: 'nuxt-child', name: 'nuxt-child',
functional: true, functional: true,
render (h, { parent, data }) { props: ['keepAlive'],
render (h, { parent, data, props }) {
data.nuxtChild = true data.nuxtChild = true
const _parent = parent const _parent = parent
const transitions = parent.$nuxt.nuxt.transitions const transitions = parent.$nuxt.nuxt.transitions
@ -29,12 +30,18 @@ export default {
} }
}) })
let routerView = [
h('router-view', data)
]
if (typeof props.keepAlive !== 'undefined') {
routerView = [
h('keep-alive', routerView)
]
}
return h('transition', { return h('transition', {
props: transitionProps, props: transitionProps,
on: listeners on: listeners
}, [ }, routerView)
h('router-view', data)
])
} }
} }

View File

@ -5,7 +5,7 @@ import { compile } from '../utils'
export default { export default {
name: 'nuxt', name: 'nuxt',
props: ['nuxtChildKey'], props: ['nuxtChildKey', 'keepAlive'],
render(h) { render(h) {
// If there is some error // If there is some error
if (this.nuxt.err) { if (this.nuxt.err) {
@ -17,7 +17,8 @@ export default {
} }
// Directly return nuxt child // Directly return nuxt child
return h('nuxt-child', { return h('nuxt-child', {
key: this.routerViewKey key: this.routerViewKey,
props: this.$props
}) })
}, },
beforeCreate () { beforeCreate () {