Эх сурвалжийг харах

InfiniteScroll: Skip trigger event on invisible element (#17553)

* InfiniteScroll: Do not trigger event on invisible element

* InfiniteScroll: Do not trigger event on invisible element2
iamkun 5 жил өмнө
parent
commit
6f62feed3d

+ 3 - 0
packages/infinite-scroll/src/main.js

@@ -92,6 +92,9 @@ const handleScroll = function(cb) {
 
   if (disabled) return;
 
+  const containerInfo = container.getBoundingClientRect();
+  if (!containerInfo.width && !containerInfo.height) return;
+
   let shouldTrigger = false;
 
   if (container === el) {

+ 26 - 0
test/unit/specs/infiniteScroll.spec.js

@@ -28,5 +28,31 @@ describe('InfiniteScroll', () => {
     await wait();
     expect(vm.$el.innerText.indexOf('2') > -1).to.be.true;
   });
+
+  it('invisible element not trigger', async() => {
+    vm = createVue({
+      template: `
+      <div v-show="false">
+        <ul ref="scrollTarget" v-infinite-scroll="load" style="height: 300px;overflow: auto;">
+          <li v-for="i in count" style="display: flex;height: 50px;">{{ i }}</li>
+        </ul>
+      </div>
+      `,
+      data() {
+        return {
+          count: 0
+        };
+      },
+      methods: {
+        load() {
+          this.count += 2;
+        }
+      }
+    }, true);
+    vm.$refs.scrollTarget.scrollTop = 2000;
+    await wait();
+    expect(vm.$el.innerText.indexOf('2') > -1).to.be.false;
+  });
+
 });