Explorar el Código

fix(compat): revert private properties on $options in comapt mode

fix #3883
Evan You hace 5 años
padre
commit
ad844cf1e7
Se han modificado 1 ficheros con 10 adiciones y 0 borrados
  1. 10 0
      packages/runtime-core/src/compat/instance.ts

+ 10 - 0
packages/runtime-core/src/compat/instance.ts

@@ -37,6 +37,7 @@ import {
 import { resolveFilter } from '../helpers/resolveAssets'
 import { InternalSlots, Slots } from '../componentSlots'
 import { ContextualRenderFn } from '../componentRenderContext'
+import { resolveMergedOptions } from '../componentOptions'
 
 export type LegacyPublicInstance = ComponentPublicInstance &
   LegacyPublicProperties
@@ -127,6 +128,15 @@ export function installCompatInstanceProperties(map: PublicPropertiesMap) {
       // needed by many libs / render fns
       $vnode: i => i.vnode,
 
+      // inject addtional properties into $options for compat
+      // e.g. vuex needs this.$options.parent
+      $options: i => {
+        const res = extend({}, resolveMergedOptions(i))
+        res.parent = i.proxy!.$parent
+        res.propsData = i.vnode.props
+        return res
+      },
+
       // some private properties that are likely accessed...
       _self: i => i.proxy,
       _uid: i => i.uid,