javascript - 从 JSON 数组 react TreeView

标签 javascript json reactjs recursion treeview

我正在使用 React 从 JSON 制作 TreeView 。到目前为止,我已经使用这个示例数据制作了一个可折叠的树:

var data = {
      title: "Node 1",
      childNodes: [
        {title: "Childnode 1.1"},
        {title: "Childnode 1.2",
          childNodes: [
            {title: "Childnode 1.2.1",
              childNodes: [
                {title: "Childnode 1.2.1.1"}
              ]}, {title: "Childnode 1.2.2"}
          ]}
      ]
    };

但这是一个对象。我想获取 JSON 对象数组作为输入并从中生成 TreeView ,但我无法理解在哪里更改代码。

这是我的渲染函数:

render() {
    var childNodes;

    if (this.props.node.childNodes != null) {
      childNodes = this.props.node.childNodes.map(function (node, index) {
        return <li key={index}><Treeview node={node}/></li>
      });
    }

    return (
      <form>
        <div>
          <input type="checkbox"/>
          <label for>{this.props.node.title}</label>
        </div>
        <ul>
          {childNodes}
        </ul>
      </form>

    );
  }

如何更改代码以处理整个数组而不是一个对象?

最佳答案

递归很有趣!

const data = [{
  title: "Node 1",
  childNodes: [
    { title: "Childnode 1.1" },
    {
      title: "Childnode 1.2",
      childNodes: [
        {
          title: "Childnode 1.2.1",
          childNodes: [
            { title: "Childnode 1.2.1.1" }
          ]
        }, { title: "Childnode 1.2.2" }
      ]
    }
  ]
}];

const App = () => (
  <form>
    <Tree data={data} />
  </form>
);

const Tree = ({data}) => ( 
  <ul>
    {data && data.map(item => (
      <li>
        {item.title}
        {item.childNodes && <Tree data={item.childNodes} />}
      </li>
    ))}
  </ul>
);

演示:https://codesandbox.io/s/01kl2xmo40

关于javascript - 从 JSON 数组 react TreeView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47185330/

相关文章:

javascript - beforeunload Javascript 的延迟

javascript - 使用 Bootstrap 4 超大屏幕类时的图像轮播

json - 使用 Apps 脚本 API 创建新的 Apps 脚本文件 - 错误 - 收到无效的 JSON 负载

javascript - 为什么箭头函数可以在 ReactJS 类上使用,但不能在纯 ES6 类上使用?

css - ReactJS-CSS : setting trasitionProperty in style object does not work

javascript - Laravel Ajax 使用循环显示数据

javascript - 如何使用html表格中定义的数据显示highchart图形?

java - 改造:发布原始文本 "user={"key 1": "value1"等}?

ios - 在 TableView Controller 中显示之前对 JSON 响应进行排序 - Objective C

reactjs - 为什么 Jest 中的 TestUtils.Simulate.click 直接在 React Components 上使用时不起作用?