refactor(scheduler): simplify checkRecursiveUpdates (#11856)

This commit is contained in:
Yang Mingshan 2024-09-10 15:51:10 +08:00 committed by GitHub
parent f80d447c17
commit 48613bb928
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 18 additions and 22 deletions

View File

@ -267,27 +267,23 @@ function flushJobs(seen?: CountMap) {
}
function checkRecursiveUpdates(seen: CountMap, fn: SchedulerJob) {
if (!seen.has(fn)) {
seen.set(fn, 1)
} else {
const count = seen.get(fn)!
if (count > RECURSION_LIMIT) {
const instance = fn.i
const componentName = instance && getComponentName(instance.type)
handleError(
`Maximum recursive updates exceeded${
componentName ? ` in component <${componentName}>` : ``
}. ` +
`This means you have a reactive effect that is mutating its own ` +
`dependencies and thus recursively triggering itself. Possible sources ` +
`include component template, render function, updated hook or ` +
`watcher source function.`,
null,
ErrorCodes.APP_ERROR_HANDLER,
)
return true
} else {
seen.set(fn, count + 1)
}
const count = seen.get(fn) || 0
if (count > RECURSION_LIMIT) {
const instance = fn.i
const componentName = instance && getComponentName(instance.type)
handleError(
`Maximum recursive updates exceeded${
componentName ? ` in component <${componentName}>` : ``
}. ` +
`This means you have a reactive effect that is mutating its own ` +
`dependencies and thus recursively triggering itself. Possible sources ` +
`include component template, render function, updated hook or ` +
`watcher source function.`,
null,
ErrorCodes.APP_ERROR_HANDLER,
)
return true
}
seen.set(fn, count + 1)
return false
}