wip: watcher cleanup improvement

This commit is contained in:
Evan You
2019-06-06 13:25:05 +08:00
parent e5e56bb358
commit 1d41771e56
3 changed files with 13 additions and 2 deletions

View File

@@ -83,10 +83,15 @@ export function watch<T>(
const newValue = runner()
if (options.deep || newValue !== oldValue) {
try {
if (isFunction(cleanup)) {
// cleanup before running cb again
if (cleanup) {
cleanup()
}
cleanup = cb(newValue, oldValue)
const _cleanup = cb(newValue, oldValue)
if (isFunction(_cleanup)) {
// save cleanup so it is also called when effect is stopped
cleanup = runner.onStop = _cleanup
}
} catch (e) {
// TODO handle error
// handleError(e, instance, ErrorTypes.WATCH_CALLBACK)