generateComponentTrace 函数(3)
上篇文章里,我们学习了 repeat 函数,现在我们可以继续函数 generateComponentTrace 中那个冗长的语句了。
return '\n\nfound in\n\n' + tree
.map((vm, i) => `${
i === 0 ? '---> ' : repeat(' ', 5 + i * 2)
}${
Array.isArray(vm)
? `${formatComponentName(vm[0])}... (${vm[1]} recursive calls)`
: formatComponentName(vm)
}`)
.join('\n')
通过上篇文章,我们知道 repeat 函数的主要功能是重复传递进去的字符串。在这里,重复空字符串一定次数。
i === 0 ? '--->' : repeat(' ', 5 + i * 2)
接着,用一个三元运算符检测 vm 是不是一个数组。如果 vm 是数组,调用 formatComponentName 函数,参数为 vm 的第一个参数、“… (”,vm的第二个参数和“ recursive calls”, .map 的回调函数拼接其返回值。
如果 vm 不是数组,调用 formatComponentName 函数,参数为 vm ,.map 的回调函数拼接其返回值。
函数 formatComponentName 在其他地方声明了,我们将在下一章里学习,后面再继续回到 generateComponentTrace 函数中。