mirror of
https://github.com/vuejs/vue.git
synced 2024-11-21 20:28:54 +00:00
fix(keep-alive): fix memory leak without breaking transition tests
This commit is contained in:
parent
2632249925
commit
e0747f40a8
@ -33,10 +33,15 @@ function matches(
|
|||||||
}
|
}
|
||||||
|
|
||||||
function pruneCache(
|
function pruneCache(
|
||||||
keepAliveInstance: { cache: CacheEntryMap; keys: string[]; _vnode: VNode },
|
keepAliveInstance: {
|
||||||
|
cache: CacheEntryMap
|
||||||
|
keys: string[]
|
||||||
|
_vnode: VNode
|
||||||
|
$vnode: VNode
|
||||||
|
},
|
||||||
filter: Function
|
filter: Function
|
||||||
) {
|
) {
|
||||||
const { cache, keys, _vnode } = keepAliveInstance
|
const { cache, keys, _vnode, $vnode } = keepAliveInstance
|
||||||
for (const key in cache) {
|
for (const key in cache) {
|
||||||
const entry = cache[key]
|
const entry = cache[key]
|
||||||
if (entry) {
|
if (entry) {
|
||||||
@ -46,6 +51,7 @@ function pruneCache(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$vnode.componentOptions!.children = undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
function pruneCacheEntry(
|
function pruneCacheEntry(
|
||||||
|
@ -62,8 +62,6 @@ const componentVNodeHooks = {
|
|||||||
vnode, // new parent vnode
|
vnode, // new parent vnode
|
||||||
options.children // new children
|
options.children // new children
|
||||||
)
|
)
|
||||||
// #12187 unset children reference after use to avoid memory leak
|
|
||||||
options.children = undefined
|
|
||||||
},
|
},
|
||||||
|
|
||||||
insert(vnode: MountedComponentVNode) {
|
insert(vnode: MountedComponentVNode) {
|
||||||
|
Loading…
Reference in New Issue
Block a user