【发布时间】:2018-05-11 14:02:35
【问题描述】:
我将如何渲染一个包含嵌套 <ul> 项目的菜单,其中未知数量的子项对对象做出反应,如下例所示?
[
{
title: "Top level 1",
slug: "top-level-1",
children: [
{
title: "Sub level 1",
slug: "sub-level-1",
children: [
{
title: "Sub Sub Level 1"
slug: "sub-sub-level-1"
}
]
}
{
title: "Sub level 2",
slug: "sub-level-2"
}
]
},
{
title: "Top level 2",
slug: "top-level 2"
}
]
【问题讨论】:
-
两个问题: 1. 你有没有尝试过自己做这个? 2. 嵌套深度是已知因素吗?
-
是的,我尝试了一些不同的方法。我可以使用
.map()渲染顶级项目,但我似乎无法理解如何渲染孩子。理想情况下,我希望解决方案能够在不考虑深度的情况下渲染儿童 -
如果您希望能够遍历未知深度的对象,则需要使用递归。您需要创建一个以对象和累加器为参数的函数。该函数将在提供的对象上检查
.children,并以每个子对象作为参数调用自身,不要忘记累加器!如果提供的对象没有 .children属性,则它是叶节点,您可以使用其信息生成组件。累加器是递归函数用来构建最终集合的东西。 -
谢谢!这是有道理的 - 我想我真正的问题是我将如何编写这样一个有条件地存储组件/标记的函数,然后我可以稍后在我的组件中返回。在 vanilla js 中,我只会将标记存储为字符串然后输出 - 但是这种方法似乎在反应中不起作用。
标签: javascript wordpress reactjs