一个树形结构的表格,在不同的操作后高亮行数据,会有多层子级,但是这么写递归有问题,报内存溢出错误,应该如何修改,感谢各位
// 递归选中高亮行
heightLight() {
if (this.type === 'add' || this.type === 'addChild') {
// 循环当前数组
this.list.forEach((item, index) => {
// 如果里面的id和当前操作前选中行的id相等,把当前数组的最后一行高亮
if (item.id === this.selectRow.id) {
this.$refs.productCategoryCateTable.setCurrentRow(this.list[this.list.length - 1])
// 如果有子级做同样操作
} else if (item.children.length > 0) {
item.children.forEach((item2, index2) => {
if (item2.id === this.selectRow.id) {
console.log(this.list[index].children[this.list[index].children.length - 1],
'this.list[index].children[this.list[index].children.length-1]'
)
this.$nextTick(() => {
this.$refs.productCategoryCateTable.setCurrentRow(this.list[index].children[this.list[index].children.length - 1]
)
})
}
//如果还有子级递归
this.heightLight(item.children)
})
}
})
}
}
且先不说方法写得好不好,很明显的一个错误:heightLight方法没有接收参数,递归里面又传了参数,这样就无限循环,当然就内存泄漏了。可以先这么改一下试试