我正在尝试为无限滚动列表设置一个 IntersectionObserver。如果已到达列表的最后一项,我想检查 IntersectionObserver。
到目前为止,我的IntersectionObserver设置如下所示:
mounted() {
const config = {
treshold: 1
};
const observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.intersectionRatio > 0) console.log(entry.target);
});
}, config);
observer.observe(this.lastRenderedDeal());
}
我的列表项呈现如下:
<deal :deal="deal"
:key="index"
ref="deals"
v-for="(deal, index) in deals"
</deal>
要获取最后一个renderDeal,我ref
在交易中使用:
lastRenderedDeal() {
const deals = this.$refs.deals;
return deals ? deals[deals.length - 1].$el : null;
}
这适用于初始设置并触发。问题是当我想要无限滚动时,我需要继续附加到交易列表中。因此,我lastRenderedDeal
不断更新以反映附加到我列表中的最后一笔交易。
这种反应并没有传递给observer.observe
它看起来的方法。它只拾取我的初始元素。这似乎很明显,因为它已在mounted
钩子中实例化,但我该如何处理呢?
我是否需要为交易设置观察者并再次调用observer.observe?如果是这样,我可以简单地告诉它替换最初观察到的项目吗?