refactor: call instead of wrap

This commit is contained in:
Evan You
2019-08-30 12:22:41 -04:00
parent 3d681f8bcd
commit 7fe82398f7
2 changed files with 18 additions and 23 deletions

View File

@@ -4,7 +4,7 @@ import {
currentInstance,
setCurrentInstance
} from './component'
import { applyErrorHandling, ErrorTypeStrings } from './errorHandling'
import { callUserFnWithErrorHandling, ErrorTypeStrings } from './errorHandling'
import { warn } from './warning'
import { capitalize } from '@vue/shared'
@@ -14,14 +14,12 @@ function injectHook(
target: ComponentInstance | null = currentInstance
) {
if (target) {
// wrap user hook with error handling logic
const withErrorHandling = applyErrorHandling(hook, target, type)
;(target[type] || (target[type] = [])).push((...args: any[]) => {
// Set currentInstance during hook invocation.
// This assumes the hook does not synchronously trigger other hooks, which
// can only be false when the user does something really funky.
setCurrentInstance(target)
const res = withErrorHandling(...args)
const res = callUserFnWithErrorHandling(hook, target, type, args)
setCurrentInstance(null)
return res
})