首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应显示TreeNode

反应显示TreeNode
EN

Stack Overflow用户
提问于 2020-06-23 12:33:10
回答 2查看 79关注 0票数 0

我想像下面这样在React中生成TreeNode。

代码语言:javascript
复制
<TreeNode>
    <TreeNode>
        <TreeNode>
        </TreeNode>
    </TreeNode>
</TreeNode>

下面是我尝试过的代码

代码语言:javascript
复制
const numberVal = [1,2,3];
function renderPage(){
return(numberVal.map((n, i) => (
    <TreeNode></TreeNode>
  )));
}

它显示如下:

代码语言:javascript
复制
<TreeNode></TreeNode>
<TreeNode></TreeNode>
<TreeNode></TreeNode>

有人能让我知道怎么做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-23 13:07:51

我会使用递归:

代码语言:javascript
复制
const numberVal = [1,2,3];
function renderPage(){

  const processData = array => {

    if(array.length)  {
      const [first, ...rest] = array || [];
      return (
        <TreeNode>
          {processData(rest)}
        </TreeNode>
      )
    }
    return null;
  }

  return processData(numberVal);
}
票数 2
EN

Stack Overflow用户

发布于 2020-06-23 13:25:34

试试这样的东西。在构建节点时,包括子结构,如果存在,则让其子结构包含在节点内部。

代码语言:javascript
复制
const makeNodes([nodeId, ...children]) {
  return (
    <TreeNode id={nodeId}>
    { children ? makeNodes(children) : null }
    </TreeNode>
  );
}

render() {
  const a = [1,2,3];
  return makeNodes(a);
}

这样你就可以制造出更复杂的结构,像这样:

代码语言:javascript
复制
render() {
  const a = [ [1,2,3], [4], [5,6] ];
  return (
    <div>
    { a.map(nodes => makeNodes(nodes)) }
    </div>
  );
}

它应该产生

代码语言:javascript
复制
  <TreeNode id=1>
    <TreeNode id=2>
      <TreeNode id=3>
      </TreeNode>
    </TreeNode>
  </TreeNode>
  <TreeNode id=4>
  </TreeNode>
  <TreeNode id=5>
    <TreeNode id=6>
    </TreeNode>
  </TreeNode>

请注意,这段代码实际上没有运行,并且可能有语法错误--请考虑它是伪代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62534835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档