Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Cascader] 级联选择器省市区县4级结构时有严重的性能问题! #2840

Closed
michaellee123 opened this issue Jun 3, 2024 · 7 comments · Fixed by #2866
Closed
Labels
need confirm need confirm

Comments

@michaellee123
Copy link

tdesign-miniprogram 版本

1.4.1

重现链接

No response

重现步骤

用4级全国城市放进来,整个操作几乎处于不可用的状态

期望结果

No response

实际结果

No response

基础库版本

3.4.4

补充说明

此处是测试数据
area_format.json

Copy link
Contributor

github-actions bot commented Jun 3, 2024

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

@anlyyao anlyyao added the need confirm need confirm label Jun 4, 2024
@jarmywang
Copy link
Collaborator

应该是数据太大导致内存压力过大,技术层面优化空间不大,可以考虑从产品层面优化,比如改成3级,后面手动输入

@michaellee123
Copy link
Author

应该是数据太大导致内存压力过大,技术层面优化空间不大,可以考虑从产品层面优化,比如改成3级,后面手动输入

不是这个问题,单纯就是你们代码实现上有问题,我看了每次点击之后都有有一个setData的过程,这里setData每次都放进去了完整的json,但是实际上,比如说我选择第一层,setData只需要设置第二层就行了吧,特别是到最后一层,已经筛选到只剩几个item了,但是setData这里log报的是数据有3mb多。我后来换用微信自带的picker-view和picker-view-column组合使用,一点儿问题都没有。

我觉得一个级联选择器连最基本的全国省市区数据都做不到的话,建议把这个组件直接删除比较好,免得浪费大家的时间。就这么一个一兆多点的json,能让腾讯的人说出技术层面优化空间不大,总显得有些可笑。

@michaellee123
Copy link
Author

我排查了一下,一共有两个地方存在性能问题,都是数据结构的问题:

  1. radio-group 应该将check标记和原始数据分开,每次点击之后,选中效果的界面展示会设置一次完整数据,然后在展示第二层的时候还会设置一次三级的数据,但是只是更新界面显示和结果的话,只需要记住check的index就可以了;
  2. cascader items应该分开做多个数据例如:items0, items1, items2,而不是items[0], items[1], items[2],每次设置后面的数据的时候,都会把前面的数据再设置一次,但是实际上这里的数据并没有变化,根本不需要设置;

把这两个东西改掉,这个性能问题就解决了。

@jarmywang
Copy link
Collaborator

@michaellee123 感谢反馈,我们再看下

novlan1 added a commit to novlan1/tdesign-miniprogram that referenced this issue Jun 14, 2024
jarmywang pushed a commit that referenced this issue Jun 14, 2024
* perf(cascader): 优化大数据表单

fix #2840

* perf(cascader): select时优化性能
@jarmywang
Copy link
Collaborator

@michaellee123 当前问题已修复,下个版本带上,解决的整体思路是减少data与setData的数据量,避免非必要计算和setData,再次感谢你的探索与建议,我一开始理解有偏差,给你道歉🫡,希望后续使用tdesign能更加愉快,有问题及时反馈,我们认真跟进😁

@michaellee123
Copy link
Author

@michaellee123 当前问题已修复,下个版本带上,解决的整体思路是减少data与setData的数据量,避免非必要计算和setData,再次感谢你的探索与建议,我一开始理解有偏差,给你道歉🫡,希望后续使用tdesign能更加愉快,有问题及时反馈,我们认真跟进😁

我的态度也不太友好,给你点赞👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
need confirm need confirm
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants