wip: Vue.util compat

This commit is contained in:
Evan You
2021-04-11 16:53:43 -04:00
parent c55f3ed0e8
commit 62bfdae043
6 changed files with 160 additions and 32 deletions

View File

@@ -991,8 +991,12 @@ export function resolveMergedOptions(
return (raw.__merged = options)
}
function mergeOptions(to: any, from: any, instance: ComponentInternalInstance) {
const strats = instance.appContext.config.optionMergeStrategies
export function mergeOptions(
to: any,
from: any,
instance?: ComponentInternalInstance
) {
const strats = instance && instance.appContext.config.optionMergeStrategies
const { mixins, extends: extendsOptions } = from
extendsOptions && mergeOptions(to, extendsOptions, instance)
@@ -1000,8 +1004,8 @@ function mergeOptions(to: any, from: any, instance: ComponentInternalInstance) {
mixins.forEach((m: ComponentOptionsMixin) => mergeOptions(to, m, instance))
for (const key in from) {
if (strats && hasOwn(strats, key)) {
to[key] = strats[key](to[key], from[key], instance.proxy, key)
if (strats && hasOwn(to, key) && hasOwn(strats, key)) {
to[key] = strats[key](to[key], from[key], instance && instance.proxy, key)
} else {
to[key] = from[key]
}