hook: Function & { __weh?: Function },
target: ComponentInternalInstance | null = currentInstance,
prepend: boolean = false
-) {
+): Function | undefined {
if (target) {
const hooks = target[type] || (target[type] = [])
// cache the error handling wrapper for injected hooks so the same hook
} else {
hooks.push(wrappedHook)
}
+ return wrappedHook
} else if (__DEV__) {
const apiName = `on${capitalize(
ErrorTypeStrings[type].replace(/ hook$/, '')
}
function injectToKeepAliveRoot(
- hook: Function,
+ hook: Function & { __weh?: Function },
type: LifecycleHooks,
target: ComponentInternalInstance,
keepAliveRoot: ComponentInternalInstance
) {
- injectHook(type, hook, keepAliveRoot, true /* prepend */)
+ // injectHook wraps the original for error handling, so make sure to remove
+ // the wrapped version.
+ const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */)
onUnmounted(() => {
- remove(keepAliveRoot[type]!, hook)
+ remove(keepAliveRoot[type]!, injected)
}, target)
}