我通过递归在React.js中进行层次树视图。我从数据库中获取类别,并在一个结构中准备一个数组,每个数组元素都是一个对象,它有一个由他的孩子组成的数组:
React.js call recursive function in render
我已经能够生成视图,但现在我的问题是设置onClick = { 每个元素的属性。
由于某种原因,树的第一级元素与onClick函数配合良好,但从第二级开始,每当我点击任何元素时,绑定到点击的函数称为二,三,四times,取决于当前元素的树级别。
使用onClick的MY函数:
printTree: function(level){
var self = this;
var level_length = level.length;
if(level_length >= 1){
return(
<ul>
{
level.map(function(category){
return (
<li key={category.fields.name} onClick={self.editCategory.bind(self,category)}><a>{category.fields.name}</a>
{ self.printTree(category.sons_array)}
</li>
)
})
}
</ul>
)
}
}
输入参数级别始终是一个数组..它由树的一个级别组成,这是一个将在此次迭代中处理的对象集合。
我认为我的问题是以递归方式传递函数 self 。在第一次调用该函数时,self指向实际的 this ,一切正常,但在递归中从第二级开始, self 将指向递归调用中的上一个函数,而不是 this ,但我不知道如何修复它。