修改Autodesk Forge版本树代码后节点加载失败求助
问题分析与修复方案
错误根源
你修改后的createTreeNode函数参数顺序为(id, text, icon, children = false, derivativesId = null),但在map中调用时,错误地将derivativesId传到了第四个参数的位置——也就是原本属于children的参数位。这会导致:
- 当
derivativesId存在时,children被赋值为该ID字符串(而非预期的布尔值) - 当
derivativesId为null时,children被设为null
树组件预期children是布尔值或子节点数组,参数错位直接破坏了节点结构,导致树无法加载。
修复步骤
- 修正参数传递顺序
调用createTreeNode时,明确传入children参数(保持默认的false),再传递derivativesId:
return createTreeNode(`version|${id}`, attributes.createTime, 'icon-version', false, derivativesId);
- 优化代码(可选)
合并forEach和map逻辑,避免重复解析version对象:
async function getVersions(hubId, projectId, itemId) { const versions = await getJSON(`/api/hubs/${hubId}/projects/${projectId}/contents/${itemId}/versions`); return versions.map(version => { const { id, attributes, relationships } = version; const derivativesId = relationships?.derivatives?.data?.id || null; console.log(`Version ID: ${id}`, `Derivatives ID: ${derivativesId}`); return createTreeNode(`version|${id}`, attributes.createTime, 'icon-version', false, derivativesId); }); }
- 无derivatives字段的兼容处理
你已经通过可选链操作符?.和|| null处理了relationships中不存在derivatives的情况,这部分逻辑是正确的,无需额外修改——即使没有该字段,derivativesId会被设为null,不会触发报错。
验证效果
修改后,createTreeNode的children参数保持预期的布尔值,derivativesId正确传入对应位置,树组件能获取到合法的节点结构,即可正常加载。
内容的提问来源于stack exchange,提问作者Kuladeep
相关产品推荐
相关产品推荐

