wip: restructure api + support watch multiple sources

This commit is contained in:
Evan You
2019-06-07 14:55:38 +08:00
parent d3fe492d7e
commit 07403c9aba
4 changed files with 58 additions and 47 deletions

View File

@@ -0,0 +1,54 @@
import { ComponentInstance, LifecycleHooks, currentInstance } from './component'
function injectHook(
name: keyof LifecycleHooks,
hook: () => void,
target: ComponentInstance | null | void = currentInstance
) {
if (target) {
// TODO inject a error-handling wrapped version of the hook
// TODO also set currentInstance when calling the hook
;(target[name] || (target[name] = [])).push(hook)
} else {
// TODO warn
}
}
export function onBeforeMount(hook: () => void, target?: ComponentInstance) {
injectHook('bm', hook, target)
}
export function onMounted(hook: () => void, target?: ComponentInstance) {
injectHook('m', hook, target)
}
export function onBeforeUpdate(hook: () => void, target?: ComponentInstance) {
injectHook('bu', hook, target)
}
export function onUpdated(hook: () => void, target?: ComponentInstance) {
injectHook('u', hook, target)
}
export function onBeforeUnmount(hook: () => void, target?: ComponentInstance) {
injectHook('bum', hook, target)
}
export function onUnmounted(hook: () => void, target?: ComponentInstance) {
injectHook('um', hook, target)
}
export function onRenderTriggered(
hook: () => void,
target?: ComponentInstance
) {
injectHook('rtg', hook, target)
}
export function onRenderTracked(hook: () => void, target?: ComponentInstance) {
injectHook('rtc', hook, target)
}
export function onErrorCaptured(hook: () => void, target?: ComponentInstance) {
injectHook('ec', hook, target)
}