mirror of
https://gitee.com/vuejs/vue.git
synced 2024-12-06 05:57:35 +08:00
handle recursive traces
This commit is contained in:
parent
4b6913cb46
commit
9fe26a6327
@ -55,7 +55,19 @@ if (process.env.NODE_ENV !== 'production') {
|
|||||||
const generateComponentTrace = vm => {
|
const generateComponentTrace = vm => {
|
||||||
if (vm._isVue && vm.$parent && String.prototype.repeat) {
|
if (vm._isVue && vm.$parent && String.prototype.repeat) {
|
||||||
const tree = []
|
const tree = []
|
||||||
|
let currentRecursiveSequence = 0
|
||||||
while (vm) {
|
while (vm) {
|
||||||
|
if (tree.length > 0) {
|
||||||
|
const last = tree[tree.length - 1]
|
||||||
|
if (last.constructor === vm.constructor) {
|
||||||
|
currentRecursiveSequence++
|
||||||
|
vm = vm.$parent
|
||||||
|
continue
|
||||||
|
} else if (currentRecursiveSequence > 0) {
|
||||||
|
tree[tree.length - 1] = [last, currentRecursiveSequence]
|
||||||
|
currentRecursiveSequence = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
tree.push(vm)
|
tree.push(vm)
|
||||||
vm = vm.$parent
|
vm = vm.$parent
|
||||||
}
|
}
|
||||||
@ -63,7 +75,9 @@ if (process.env.NODE_ENV !== 'production') {
|
|||||||
.map((vm, i) => `${
|
.map((vm, i) => `${
|
||||||
i === 0 ? '---> ' : ' '.repeat(5 + i * 2)
|
i === 0 ? '---> ' : ' '.repeat(5 + i * 2)
|
||||||
}${
|
}${
|
||||||
formatComponentName(vm)
|
Array.isArray(vm)
|
||||||
|
? `${formatComponentName(vm[0])}... (${vm[1]} recursive calls)`
|
||||||
|
: formatComponentName(vm)
|
||||||
}`)
|
}`)
|
||||||
.join('\n')
|
.join('\n')
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user