Forráskód Böngészése

make sure to expose real instance instead of proxy as vnode.context

Evan You 10 éve
szülő
commit
69abe1b726
3 módosított fájl, 5 hozzáadás és 1 törlés
  1. 1 0
      flow/component.js
  2. 2 0
      src/core/instance/init.js
  3. 2 1
      src/core/vdom/create-element.js

+ 1 - 0
flow/component.js

@@ -45,6 +45,7 @@ declare interface Component {
   // private properties
   _uid: number;
   _isVue: true;
+  _self: Component;
   _renderProxy: Component;
   _watcher: Watcher;
   _watchers: Array<Watcher>;

+ 2 - 0
src/core/instance/init.js

@@ -34,6 +34,8 @@ export function initMixin (Vue: Class<Component>) {
     } else {
       vm._renderProxy = vm
     }
+    // expose real self
+    vm._self = vm
     initLifecycle(vm)
     initEvents(vm)
     callHook(vm, 'init')

+ 2 - 1
src/core/vdom/create-element.js

@@ -34,7 +34,8 @@ export function renderElement (
   data?: VNodeData,
   namespace?: string
 ): VNode | void {
-  const context: Component = this
+  // make sure to expose real self instead of proxy
+  const context: Component = this._self
   const parent: Component | null = renderState.activeInstance
   if (!parent) {
     process.env.NODE_ENV !== 'production' && warn(