Hu Jing
Hu Jing
这个问题解决了没?我也遇到了
> [Fix dom not change while data change修复数据改变时dom不改变的问题](https://github.com/tnfe/vue3-infinite-list/issues/18) 它在watch侦测到data变化后,调用了setTimeout来执行数据加载,这会在事件循环中,将相关函数放入宏任务队列中,会导致dom渲染的时间点结束后才执行数据加载(虽然vue的dom更新和浏览器的渲染流程难以调试证明,但是实际表现确实如此)。 可以看我提的issue来解决问题。 https://github.com/tnfe/vue3-infinite-list/blob/e20a6ad67d8b5849885e8ebe30b483f486e95b4c/src/index.vue#L323 "会导致dom渲染的时间点结束后才执行数据加载" 这句话不是很理解, 这个所谓的数据加载是什么意思? 我的理解是对于 ` setTimeout(scrollRender, 0); `setTimeout 可能会导致 vue渲染完成之后才会执行 scrollRender
> 又思考了一下: > > 1. 缓存必然会导致数据一致性问题发生,所以这个问题也算“合理”。 > 2. 但是自己接收自己的广播消息相当于自己会写两次 L1,显然会加剧“数据一致性问题”。 > > * 所以是否可以给每个节点加个 uuid,发消息时带上该 id,识别到是自己发的消息,就不执行写操作了。 > 3. 当有多个应用节点时,广播消息剧增,会导致一致性问题更加不可控。 > > * 所以是否可以考虑将广播功能做成开关,让用户自己选择是否开启。 > * 或许直接移除广播功能,仅将 L1 定位于“本地高速缓存”,或许“更实用”? > >...