]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(compat): revert private properties on $options in comapt mode
authorEvan You <yyx990803@gmail.com>
Mon, 7 Jun 2021 15:04:41 +0000 (11:04 -0400)
committerEvan You <yyx990803@gmail.com>
Mon, 7 Jun 2021 15:04:41 +0000 (11:04 -0400)
fix #3883

packages/runtime-core/src/compat/instance.ts

index 39f27f59655aaa50e3225a7d29db5ddb93e6fddb..cc90395613da37c867c59af453af44c8502ea905 100644 (file)
@@ -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,