本帖最后由 Richard.Huang 于 2024-1-22 16:56 编辑
产品:SpreadJS
版本:V16
【需求背景】项目中激活单元格进入编辑操作的模式为快速编辑,进入单元格或者点击单元格时进入编辑状态,且项目中的单元格因为需求上存在需要自定义渲染的部分,大多数单元格均为自定义单元格。
【遇到的问题】在进行点击单元格或者键盘上下左右切换单元格时,代码中通过 sheet.endEdit、sheet.setActiveCell及sheet.startEdit 三个方法完成切换且马上进入编辑状态的操作,但是执行过程中发现 endEdit 会造成可视区域的repaint,setActive及startEdit也会造成部分repaint,导致部分配置稍低的电脑出现卡顿。即使不改变单元格录入值,仅执行切换操作仍然拥有这种卡顿感。影响用户体验。
【目前的优化处理】为了处理以上问题,目前采取的方案为在以上三个方法执行时停止绘制,执行完成后重新恢复绘制,以此减少repaint执行次数,但只是降低卡顿感,任然避免不了endEdit带来的repaint导致的卡顿感。
【需要解决的问题】是否存在某种方式可以在编辑执行endEdit时,在单元格值未发生改变时不去执行这个repaint,或者是否为使用方式不正确造成的问题,是否有比较好的处理方案处理这种快速编辑的场景。
|
|