Преглед изворни кода

remove parent/ref elm references when destroying instance, fix memory leak (fix vue-router#1279)

Evan You пре 9 година
родитељ
комит
3209f6f517
1 измењених фајлова са 5 додато и 2 уклоњено
  1. 5 2
      src/core/instance/lifecycle.js

+ 5 - 2
src/core/instance/lifecycle.js

@@ -119,6 +119,9 @@ export function lifecycleMixin (Vue: Class<Component>) {
     }
     // call the last hook...
     vm._isDestroyed = true
+    // invoke destroy hooks on current rendered tree
+    vm.__patch__(vm._vnode, null)
+    // fire destroyed hook
     callHook(vm, 'destroyed')
     // turn off all instance listeners.
     vm.$off()
@@ -126,8 +129,8 @@ export function lifecycleMixin (Vue: Class<Component>) {
     if (vm.$el) {
       vm.$el.__vue__ = null
     }
-    // invoke destroy hooks on current rendered tree
-    vm.__patch__(vm._vnode, null)
+    // remove reference to DOM nodes (prevents leak)
+    vm.$options._parentElm = vm.$options._refElm = null
   }
 }