页面上添加了滚动监听某个组件的显隐,假如这个组件叫A:
而同页面中,其它组件上使用了动态绑定ref,并且动态获取,假如这些组件叫Bs:
那么在滚动页面的时候,A组件的显示隐藏会引起Bs组件ref的重复动态获取:
解决办法:
使用 vue3的指令 v-memo。关于v-memo。官网的描述是:
【缓存一个模板的子树。在元素和组件上都可以使用。为了实现缓存,该指令需要传入一个固定长度的依赖值数组进行比较。如果数组里的每个值都与最后一次的渲染相同,那么整个子树的更新将被跳过。】
具体详情看官网内置指令 | Vue.js
很清晰了,在外层加上v-memo,这样即使页面滚动,mainPart没有变化,那么使用了mainPart这个对象的组件,会被缓存,不会更新,也就不会被重复获取。