VTable icon indicating copy to clipboard operation
VTable copied to clipboard

[Bug] 上下滚动时,大部分行的数据会丢失

Open gaochen1112 opened this issue 8 months ago • 6 comments

Version

"@visactor/vue-vtable": "^1.17.6",

Link to Minimal Reproduction

https://codesandbox.io/p/sandbox/viscator-vtable-vue-demo-compilation-forked-qj5kg3?file=%2Fpackage.json%3A10%2C5

Steps to Reproduce

在线代码编辑器中,我只修改了ListTable-Basic的页面代码。表格加载完毕,滚动时稳定会出现行数据丢失

Current Behavior

滚动时行数据空白

Expected Behavior

滚动时正确加载数据

Environment

- OS:
- Browser:
- Framework:

Any additional comments?

No response

gaochen1112 avatar Apr 15 '25 02:04 gaochen1112

@Rui-Sun 您复现了吗

luoxiaofeng1029 avatar Apr 17 '25 06:04 luoxiaofeng1029

@Rui-Sun 请问这个问题是确认存在了吗.是否加入修复计划?如果不存在,应该怎么办

luoxiaofeng1029 avatar Apr 21 '25 04:04 luoxiaofeng1029

@Rui-Sun 有没有什么临时的办法

luoxiaofeng1029 avatar Apr 23 '25 08:04 luoxiaofeng1029

@Rui-Sun 有没有什么临时的办法 customConfig里传入 maxDomCacheCount 「最大缓存节点数量」 现在内部默认只缓存100个节点,可以按需给一个足够大的值,另外vue属性里可以根据行列传入id值,一定程度上可以增大节点复用率

7dingdang0 avatar Apr 23 '25 10:04 7dingdang0

忘了这个功能在哪个版本更新的,建议用最新版吧

7dingdang0 avatar Apr 23 '25 10:04 7dingdang0

@Rui-Sun 有没有什么临时的办法 customConfig里传入 maxDomCacheCount 「最大缓存节点数量」 现在内部默认只缓存100个节点,可以按需给一个足够大的值,另外vue属性里可以根据行列传入id值,一定程度上可以增大节点复用率

添加了足够大的maxDomCacheCount参数,初始化完毕,滚动是没有问题的,但是上下不停的滚一会儿,还是会出现数据空白的情况。bug复现看下面 `

<ListColumn v-for="column in columns" :key="column.field" :field="column.field" :title="column.title">
  <template #customLayout="{ width, height, record }">
    <Group :width="width" :height="height" display="flex" align-items="center" :vue="{}">
      <div>
        <span class="BOM">BOM</span>
      </div>
    </Group>
  </template>
</ListColumn>

`

Image

gaochen1112 avatar Apr 24 '25 02:04 gaochen1112

@fangsmile 请问这个问题还能解决吗?也不知道有什么临时解决的办法

luoxiaofeng1029 avatar Apr 29 '25 01:04 luoxiaofeng1029

@luoxiaofeng1029 临时解决方案上面有提到,我今天调试下这个问题

7dingdang0 avatar Apr 29 '25 01:04 7dingdang0

@luoxiaofeng1029 @gaochen1112 对于这种dom内容相同的批量渲染,vue的diff算法会错误地复用dom节点,这种情况建议给dom节点添加key标识,用法原理同v-for

Image

7dingdang0 avatar May 07 '25 03:05 7dingdang0

@luoxiaofeng1029 @gaochen1112 对于这种dom内容相同的批量渲染,vue的diff算法会错误地复用dom节点,这种情况建议给dom节点添加key标识,用法原理同v-for

Image

按照你的方法,临时解决了这个问题。如果你觉得这个问题不需要修复,可以关闭这个issue

gaochen1112 avatar May 08 '25 05:05 gaochen1112

@gaochen1112 这位同学,请仔细看,我是建议你这样去做,不管你使用vue3还是其他插件,应该主动去适应他的用法哦,另外插件内也适配了这种情况

7dingdang0 avatar May 08 '25 06:05 7dingdang0