fix: clone vnode before mutating flags

This commit is contained in:
Evan You 2018-09-27 10:23:31 -04:00
parent 86d95cf33b
commit 01a0fcb876

View File

@ -1,5 +1,5 @@
import { Component, ComponentClass, MountedComponent } from '../component'
import { VNode, Slots } from '../vdom'
import { VNode, Slots, cloneVNode } from '../vdom'
import { VNodeFlags } from '../flags'
type MatchPattern = string | RegExp | string[] | RegExp[]
@ -81,6 +81,11 @@ export class KeepAlive extends Component<{}, KeepAliveProps> {
const { cache, keys } = this
const key = vnode.key == null ? comp : vnode.key
const cached = cache.get(key)
// clone vnode if it's reused because we are going to mutate its flags
if (vnode.el) {
vnode = cloneVNode(vnode)
}
cache.set(key, vnode)
if (cached) {