tdesign-react
tdesign-react copied to clipboard
[Tree] 设置自定义label的render后,setItem修改label后UI不更新
tdesign-react 版本
1.7.5
重现链接
https://stackblitz.com/edit/react-9btors-fh6lae?file=src%2Fdemo.tsx
重现步骤
Tree组件设置了label的自定义render后,setItem修改label后,被修改的节点没有渲染新的 label,该场景的其他属性希望也关注下
期望结果
setItem修改属性后,数据和UI都能刷新
实际结果
Tree组件设置了label的自定义render后,setItem修改label后,被修改的节点没有渲染新的 label
框架版本
React 18.2.0
浏览器版本
Chrome 125.0.6422.176
系统版本
MacOS Sonoma 14.5
Node版本
16.19.1
补充说明
No response
👋 @TeresaRd,感谢给 TDesign 提出了 issue。 请根据 issue 模版确保背景信息的完善,我们将调查并尽快回复你。
就示例代码看来,感觉不算是 bug,data 中的 label 只是初始的时候用来赋值给 label 了,后续调用 setItem 的时候修改 label,label 的值也成功修改了,只是 data 里面的 label 还是原来的值,感觉这样也算是合理的。把 getLabel 里面的逻辑改为 return node.label 就好了
不过发现一个问题,用 setData 修改 data 中的 label 时,外面 label 的值也改变了,而且没有重新调用 getLabel 获取新的 label 渲染
需要确定一下这里 data 里面的 label 和 外面的 label 是什么关系
正如上面评论所言,应该直接读取 node.label 而不是 node.data.label
node.data 对应的是 Tree 传入的原始 data,不会主动更新
如果通过 setData,目前不会自动刷新是一个 Bug,预计下个版本修复并发布