Javascript 递归函数调用是';伸手不可及';在我的组件中
我有一个react组件,我想应用一个递归函数。我在递归函数中有一个函数调用,一旦进程完成,它将调用主函数。内部函数调用没有被调用,这意味着该函数无法访问。我不知道如何确保可以从内部函数调用main函数 如果您查看代码中的HelpFolder调用下,我想再次调用traverseFolder函数。这就是所显示的Javascript 递归函数调用是';伸手不可及';在我的组件中,javascript,recursion,Javascript,Recursion,我有一个react组件,我想应用一个递归函数。我在递归函数中有一个函数调用,一旦进程完成,它将调用主函数。内部函数调用没有被调用,这意味着该函数无法访问。我不知道如何确保可以从内部函数调用main函数 如果您查看代码中的HelpFolder调用下,我想再次调用traverseFolder函数。这就是所显示的检测到的无法访问的代码 我尝试使用此.traverse文件夹,但该文件夹不起作用 const traverseFolder = (current:any) => { co
检测到的无法访问的代码
我尝试使用此.traverse文件夹,但该文件夹不起作用
const traverseFolder = (current:any) => {
console.log(current.length)
if(current.length > 0){
for(var i = 0; i < current.length; i++){
console.log(current[i].type)
if(current[i].type === 'folder'){
console.log(current[i].name)
return(
<HelpFolder
type={current[i].type}
name={current[i].name}
path={current[i].path}
/>
)
traverseFolder(current[i])
} else {
return(
<HelpFile
type={current[i].type}
name={current[i].name}
path={current[i].path}
/>
)
}
}
} else {
console.log('no folder')
return(
<div>
{}
</div>
)
}
}
const-traverseFolder=(当前:任意)=>{
console.log(当前.length)
如果(当前长度>0){
对于(变量i=0;i
我所期望的是,它显示2个文件夹和2个文件,但它只是显示第一个文件夹。代码无法访问,因为您将其放在
返回
之后。一旦返回
,之后的任何操作都不会执行,函数将退出。因此,将函数调用放在它前面。您应该在return语句中调用traverseFolder
函数,否则代码将不会执行
您应该修复与文件夹部件相关的代码,如下所示:
if(current[i].type === 'folder'){
return(
<>
<HelpFolder
type={current[i].type}
name={current[i].name}
path={current[i].path}
/>
{traverseFolder(current[i])}
</>
);
}
if(当前[i]。类型=='folder'){
返回(
{traverseFolder(当前[i])}
);
}