描述问题:
我最近在使用 input-tabel 渲染 80 条数据的时候,遇到特别卡顿的问题需要 10 秒钟才能加载完成
截图或视频:
使用方式&版本:
- 你是如何使用 amis 的?
SDK - amis 版本是什么?
6.6.0
问题排查
我排查了源码,再根据我的实际用法有几个疑问
- 我的实际使用方式:
我有两列使用 input-number inline 模式的可编辑数字框,这个数字的小数位数是 5(实际后端返回的数据也是 5 位,比如 25.10000) - 源码中 QuickEdit:
在 render 这个组件的时候传入一个 onChange 方法,实际是 handleFormItemChange,我发现这个 handleFormItemChange 传入的 value 值,实际是 25.1,导致 onQuickChange 这个方法执行了 160 次,不停的更新表格变得异常卡顿
问题尝试改进
我在这个 handleFormItemChange 方法里面加入了,这个判断。瞬间渲染时间从 10 秒,减少 5 秒以内(4 秒多一点点)。。。
问下这个能这么改吗?是哪里做的这个控制呢?
if (
quickEdit?.type === 'input-number' &&
parseFloat(oldValue) === value
) {
return;
}
7条答案
按热度按时间nwlqm0z11#
最终原因:inputNumber自动把 string 转 number
解决方案:配置成 big: true(代码逻辑如果配置成 big true,不会做数字转换)
最后渲染时间瞬间减少一半:4.7秒
但是还是很慢很慢的...
epggiuax2#
mark
yh2wf1be3#
可以先加个 perPage:10 启动分页
31moq8wy4#
@Bamzc 时间是怎么打的?
50few1ms5#
问题 schema
9cbw7uwe6#
@Bamzc 时间是怎么打的?
我是这样模拟的 @2betop
vshtjzan7#
可以先加个 perPage:10 启动分页
我是这么处理的:
把table的懒加载配置,让input-table也支持这个配置。
渲染30条数据的时间是1.4秒(这个用户可以接受~) @2betop