}
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
}