javascript - React recursion with map 不适用于嵌套元素
问题描述
我是新手,我试图创建一个嵌套的文件夹树和递归文件。我创建了 03 个组件树、文件夹和文件。在树中,我放置了递归逻辑,如果我找到一个文件夹,我会映射所有元素,如果我找到一个文件,我会创建文件夹并调用函数,我会直接显示它(参见下面的代码)。
该函数仅创建 0 级元素。我想知道为什么一旦我再次回忆起<Tree tree ={item.items}/>
文件夹内的功能 Tree 它确实起作用。有什么提示吗?
export function Tree ({tree}) {
const items = tree
return (
<>
{items.map((item, idx) => {
if (item.items) {
/**
* is Folder
*/
return (
<Folder key={idx} folder_name={item.name} num_folders={items.length} >
{<Tree tree ={item.items}/> /**this does not work**/}
</Folder>
)
}
else {
return (
<File key={idx} file_name= {item.name} file_icon={item.icon} file_size ={item.size} />
)
}
})}
</>
);
}
解决方案
你应该使用 Reactchildren
属性。
children 是 React 组件的一个特殊属性,它包含组件中定义的任何子元素,例如上面示例中的 div。{this.props.children} 在渲染结果中包含这些孩子。
因此,您在其中插入的<Folder> </Folder>
内容将通过children
属性呈现。只需更新您的文件夹组件以呈现这些子项,如下所示:
export function Folder({ other_props, children}){
...
return (
<div>
...
{
children
}
</div>
);
}
children
在此堆栈问题中阅读有关属性的更多信息什么是 {this.props.children} 以及何时应该使用它?
推荐阅读
- android - Flowable 的 onErrorResumeNext、networkOnMainThread 出错
- opengl - Pitch、Yaw、Roll 计算混乱
- java - 连字符 (-) 的不适当 OGNL 表达式
- aurelia - 在 OpenIdConnect 中 getUser 返回 null,即使在接收令牌之后
- amazon-web-services - 尝试从不同区域链接 EB 和 EFS 时出现“未知主机”错误
- scala - 在 DataFrame 中使用 UDF
- c - 在 Switch 语句代码停止工作并且我无法输入后,我需要修改 Files 中的详细信息
- excel - Excel VBA - 将来自不同工作表的所有访问和用户汇总到新工作表中
- java - java.lang.IllegalStateException:片段未附加到上下文
- c# - ASP.NET Core 中的 ConfigureServices() 和 Configure() 有什么区别?