tdesign-react icon indicating copy to clipboard operation
tdesign-react copied to clipboard

[Tree] 设置自定义label的render后,setItem修改label后UI不更新

Open TeresaRd opened this issue 1 year ago • 4 comments

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 avatar Jul 04 '24 02:07 TeresaRd

👋 @TeresaRd,感谢给 TDesign 提出了 issue。 请根据 issue 模版确保背景信息的完善,我们将调查并尽快回复你。

github-actions[bot] avatar Jul 04 '24 02:07 github-actions[bot]

就示例代码看来,感觉不算是 bug,data 中的 label 只是初始的时候用来赋值给 label 了,后续调用 setItem 的时候修改 label,label 的值也成功修改了,只是 data 里面的 label 还是原来的值,感觉这样也算是合理的。把 getLabel 里面的逻辑改为 return node.label 就好了

l123wx avatar May 14 '25 11:05 l123wx

Image

l123wx avatar May 14 '25 11:05 l123wx

不过发现一个问题,用 setData 修改 data 中的 label 时,外面 label 的值也改变了,而且没有重新调用 getLabel 获取新的 label 渲染

Image

需要确定一下这里 data 里面的 label 和 外面的 label 是什么关系

l123wx avatar May 14 '25 11:05 l123wx

正如上面评论所言,应该直接读取 node.label 而不是 node.data.label node.data 对应的是 Tree 传入的原始 data,不会主动更新

如果通过 setData,目前不会自动刷新是一个 Bug,预计下个版本修复并发布

RylanBot avatar Sep 17 '25 09:09 RylanBot