You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

react-simple-tree-menu获取数据时map无法访问子标签如何修复

问题根因

子节点无法正常渲染是3处代码逻辑错误导致的:

  • 内层e.childTags.map回调无有效返回值:你写的nodes:[...]属于无效的语法片段,既没有声明变量,也没有作为返回值返回,map执行后会得到全是undefined的数组,组件拿不到子节点配置。
  • 子节点字段名不符合组件要求:react-simple-tree-menu约定节点的嵌套子节点必须放在nodes字段下,你当前把子节点数组赋值给了child字段,组件无法识别嵌套结构。
  • 渲染逻辑冗余:外层遍历所有父标签时,每个父标签都单独渲染了一个TreeMenu实例,不仅会造成性能浪费,还会导致不同树的展开、点击状态互相独立,不符合树形组件的交互预期。
修复后可直接运行的代码
<div style={{ listStyleType: "none", display: "inline" }}>
  <TreeMenu
    cacheSearch
    debounceTime={125}
    disableKeyboard={false}
    hasSearch={false}
    onClickItem={onClickPlusButton}
    resetOpenNodesOnDataUpdate={false}
    // 仅渲染一个TreeMenu实例,统一传入格式化后的全量树数据
    data={state.tagData.allTagDetails.map((parentTag: any) => ({
      key: parentTag.id,
      label: parentTag.name,
      // 严格使用组件要求的nodes字段挂载子节点
      nodes: parentTag.childTags.map((childTag: any) => ({
        key: childTag.id,
        label: childTag.name
        // 如果子标签还有下一级,在这里继续加nodes字段嵌套即可
      }))
    }))}
  />
</div>
关键修复点说明
  • 修正map遍历的返回逻辑:所有map回调都显式返回格式化后的节点对象,删除无效的语法片段,保证遍历后得到结构正确的节点数组。
  • 对齐组件的字段约定:将挂载子节点的字段从错误的child改为组件要求的nodes,让组件可以正常解析嵌套的树形结构。
  • 优化组件渲染逻辑:移除外层循环生成多TreeMenu实例的写法,只保留一个树组件实例,将所有层级的节点格式化后统一传入data属性,保证树的交互状态统一。

内容的提问来源于stack exchange,提问作者Milindi Senevirathne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 06:03:18