wip: beforeDestroy & destroyed compat

This commit is contained in:
Evan You 2021-04-06 10:07:16 -04:00
parent 960e0943f7
commit 65cc649559
2 changed files with 23 additions and 7 deletions

View File

@ -20,7 +20,9 @@ export const enum DeprecationTypes {
INSTANCE_DESTROY,
OPTIONS_DATA_FN,
OPTIONS_DATA_MERGE
OPTIONS_DATA_MERGE,
OPTIONS_BEFORE_DESTROY,
OPTIONS_DESTROYED
}
type DeprecationData = {
@ -138,6 +140,14 @@ const deprecations: Record<DeprecationTypes, DeprecationData> = {
`Detected conflicting key "${key}" when merging "data" option values. ` +
`In Vue 3, data keys are merged shallowly and will override one another.`,
link: `https://v3.vuejs.org/guide/migration/data-option.html#mixin-merge-behavior-change`
},
[DeprecationTypes.OPTIONS_BEFORE_DESTROY]: {
message: `\`beforeDestroy\` has been renamed to \`beforeUnmount\`.`
},
[DeprecationTypes.OPTIONS_DESTROYED]: {
message: `\`destroyed\` has been renamed to \`unmounted\`.`
}
}

View File

@ -66,6 +66,7 @@ import { VNodeChild } from './vnode'
import { callWithAsyncErrorHandling } from './errorHandling'
import { UnionToIntersection } from './helpers/typeUtils'
import { deepMergeData } from './compat/data'
import { DeprecationTypes, warnDeprecation } from './compat/deprecations'
/**
* Interface for declaring custom options.
@ -796,19 +797,24 @@ export function applyOptions(
if (renderTriggered) {
onRenderTriggered(renderTriggered.bind(publicThis))
}
if (__DEV__ && beforeDestroy) {
warn(`\`beforeDestroy\` has been renamed to \`beforeUnmount\`.`)
}
if (beforeUnmount) {
onBeforeUnmount(beforeUnmount.bind(publicThis))
}
if (__DEV__ && destroyed) {
warn(`\`destroyed\` has been renamed to \`unmounted\`.`)
}
if (unmounted) {
onUnmounted(unmounted.bind(publicThis))
}
if (__COMPAT__) {
if (beforeDestroy) {
__DEV__ && warnDeprecation(DeprecationTypes.OPTIONS_BEFORE_DESTROY)
onBeforeUnmount(beforeDestroy.bind(publicThis))
}
if (destroyed) {
__DEV__ && warnDeprecation(DeprecationTypes.OPTIONS_DESTROYED)
onUnmounted(destroyed.bind(publicThis))
}
}
if (isArray(expose)) {
if (!asMixin) {
if (expose.length) {