Javascript 递归函数调用是';伸手不可及';在我的组件中

Javascript 递归函数调用是';伸手不可及';在我的组件中,javascript,recursion,Javascript,Recursion,我有一个react组件,我想应用一个递归函数。我在递归函数中有一个函数调用,一旦进程完成,它将调用主函数。内部函数调用没有被调用,这意味着该函数无法访问。我不知道如何确保可以从内部函数调用main函数 如果您查看代码中的HelpFolder调用下,我想再次调用traverseFolder函数。这就是所显示的检测到的无法访问的代码 我尝试使用此.traverse文件夹,但该文件夹不起作用 const traverseFolder = (current:any) => { co

我有一个react组件,我想应用一个递归函数。我在递归函数中有一个函数调用,一旦进程完成,它将调用主函数。内部函数调用没有被调用,这意味着该函数无法访问。我不知道如何确保可以从内部函数调用main函数

如果您查看代码中的HelpFolder调用下,我想再次调用traverseFolder函数。这就是所显示的
检测到的无法访问的代码

我尝试使用此.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])}
);
}