opentiny / tiny-vue

TinyVue is an enterprise-class UI component library of OpenTiny community, support both Vue.js 2 and Vue.js 3, as well as PC and mobile.
https://opentiny.design/tiny-vue
MIT License
1.54k stars 253 forks source link

🐛 [Bug]: grid 组件 setAllTreeExpansion(true),树形表格层级多之后,展开全部页面卡死 #1497

Closed David-TechNomad closed 1 month ago

David-TechNomad commented 6 months ago

Version

v3.14.0

Vue Version

v 3.4

Link to minimal reproduction

https://opentiny.design/vue-playground?mode=pc&theme=default#3.14|eyJzcmMvQXBwLnZ1ZSI6IjxzY3JpcHQgbGFuZz1cInRzeFwiPlxyXG4vLyDlvJXlhaUgQG9wZW50aW55L3Z1ZSDnu4Tku7ZcclxuaW1wb3J0IHsgQnV0dG9uLCBMaW5rIH0gZnJvbSAnQG9wZW50aW55L3Z1ZSdcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBjb21wb25lbnRzOiB7XHJcbiAgICBUaW55QnV0dG9uOiBCdXR0b24sXHJcbiAgICBUaW55TGluazogTGlua1xyXG4gIH0sXHJcbiAgZGF0YSgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG1zZzogJ2hlbGxvIHdvcmxkISdcclxuICAgIH1cclxuICB9XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48dGVtcGxhdGU+XHJcbiAgPFRpbnlCdXR0b24+56Gu5a6aPC9UaW55QnV0dG9uPlxyXG4gIDxoMT57eyBtc2cgfX08L2gxPlxyXG4gIDxkaXYgY2xhc3M9XCJ0aW55dnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGlueXZ1ZS1wYWdlXCI+XHJcbiAgICAgIHRpbnl2dWVcclxuICAgICAgPHRpbnktbGluayB0eXBlPVwic3VjY2Vzc1wiIGhyZWY9J2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVudGlueS90aW55LXZ1ZSc+XHJcbiAgICAgICAgdGlueXZ1ZVxyXG4gICAgICA8L3RpbnktbGluaz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCIgc2NvcGVkPlxyXG4gIGgxe1xyXG4gICAgY29sb3I6IzVlN2NlMDtcclxuICB9XHJcbiAgLnRpbnl2dWV7XHJcbiAgICBmb250LXNpemU6IDE4eHA7XHJcbiAgICAmLXBhZ2V7XHJcbiAgICAgIGNvbG9yOiM1ZTdjZTA7XHJcbiAgICB9XHJcbiAgfVxyXG48L3N0eWxlPlxyXG4iLCIiOiJ7XCJpbXBvcnRzXCI6e1wiQG9wZW50aW55L3Z1ZVwiOlwiaHR0cHM6Ly9ucG0ub25taWNyb3NvZnQuY24vQG9wZW50aW55L3Z1ZUAzLjE0L3J1bnRpbWUvdGlueS12dWUubWpzXCIsXCJAb3BlbnRpbnkvdnVlLWljb25cIjpcImh0dHBzOi8vbnBtLm9ubWljcm9zb2Z0LmNuL0BvcGVudGlueS92dWVAMy4xNC9ydW50aW1lL3RpbnktdnVlLWljb24ubWpzXCIsXCJAb3BlbnRpbnkvdnVlLWxvY2FsZVwiOlwiaHR0cHM6Ly9ucG0ub25taWNyb3NvZnQuY24vQG9wZW50aW55L3Z1ZUAzLjE0L3J1bnRpbWUvdGlueS12dWUtbG9jYWxlLm1qc1wiLFwiQG9wZW50aW55L3Z1ZS1jb21tb25cIjpcImh0dHBzOi8vbnBtLm9ubWljcm9zb2Z0LmNuL0BvcGVudGlueS92dWVAMy4xNC9ydW50aW1lL3RpbnktdnVlLWNvbW1vbi5tanNcIixcIkBvcGVudGlueS92dWUtdGhlbWUvXCI6XCJodHRwczovL25wbS5vbm1pY3Jvc29mdC5jbi9Ab3BlbnRpbnkvdnVlLXRoZW1lQDMuMTQvXCIsXCJAb3BlbnRpbnkvdnVlLXRoZW1lLW1vYmlsZS9cIjpcImh0dHBzOi8vbnBtLm9ubWljcm9zb2Z0LmNuL0BvcGVudGlueS92dWUtdGhlbWUtbW9iaWxlQDMuMTQvXCIsXCJAb3BlbnRpbnkvdnVlLXJlbmRlcmxlc3MvXCI6XCJodHRwczovL25wbS5vbm1pY3Jvc29mdC5jbi9Ab3BlbnRpbnkvdnVlLX

Step to reproduce

grid 组件 setAllTreeExpansion(true),树形表格层级多之后,展开全部页面卡死

What is expected

希望可以优化一下setAllTreeExpansion(true)函数,不至于页面卡死

What is actually happening

grid 组件 setAllTreeExpansion(true),树形表格层级多之后,展开全部页面卡死 image fbb48be674fd095d54e7b6e3cc18bac

What is your project name

bom树表组件

Any additional comments (optional)

No response

Issues-translate-bot commented 6 months ago

Bot detected the issue body's language is not English, translate it automatically.


Title: 🐛 [Bug]: grid component setAllTreeExpansion(true), after the tree table has many levels, all pages will get stuck when expanding.

gimmyhehe commented 6 months ago

@David-TechNomad 您好~,树表在数据量大的情况,可以尝试参考一下demo,配置优化虚拟滚动~ https://opentiny.design/tiny-vue/zh-CN/smb-theme/components/grid-large-data#large-data-grid-large-tree-data

Issues-translate-bot commented 6 months ago

Bot detected the issue body's language is not English, translate it automatically.


@David-TechNomad Hello~, when the tree table has a large amount of data, you can try to refer to the demo to configure and optimize virtual scrolling~ https://opentiny.design/tiny-vue/zh-CN/smb-theme/components/grid-large-data#large-data-grid-large-tree-data

David-TechNomad commented 6 months ago

展开全部卡死demo

gimmyhehe commented 6 months ago

@David-TechNomad 用你提供的demo,添加一下配置,就不会卡死了~ :height="300" :optimization="{ scrollX: { gt: 15, rSize: 14, vSize: 10, adaptive: false }, scrollY: { gt: 1, adaptive: false } }" 参数说明: height----虚拟滚动必须配置height scrollY.gt: 1 ---- 目前表格逻辑是判断第一层数据长度,demo中第一层数据长度为2,因此这里配置大于等于1开启虚拟滚动~ 这里是个待优化点,组件库侧记录一下~