VUE 统计一个组件上使用了多少条指令

VUE Count how many directives are used on a component

我试着数了数 directives 在这样的组件上使用了多少。但它并没有像我预期的那样工作

这是我的指令文件

import ahoy from "ahoy.js"

let count = 0

export default {
  id: "bar",
  definition: {
    bind: (el, binding) => {
      const handler = (entries, observer) => {
        count++
        console.log(count)
        if (entries[0].isIntersecting) {
          setTimeout(() => {
            ahoy.track("impression", {
              ...(typeof binding.value === "object"
                ? { ...binding.value }
                : { value: binding.value }),

              page: document.title,
              path: window.location.pathname.replace(/^\/en\//g, "/"),
              class: el.classList.value
            })

            observer.unobserve(entries[0].target)
          }, 100)
        }
      }

      const createIntersection = new IntersectionObserver(handler, { rootMargin: "-45% 0%" })
      createIntersection.observe(el)
    }
  }
}

这就是我在我的组件上调用 directive 的方式

ReviewCard(
  v-bar="createIntersection(foo)"
)

未存储变量计数val++

如何计算组件上使用了多少指令?

提前致谢:)

count++ 当前在 handler 中,它被传递给 IntersectionObserver,因此 count 只会在交点处递增。该更新可能应该从 handler 移到 bind() 调用的根目录:

export default {
  definition: {
    bind: (el, binding) => {
      count++

      const handler = /*...*/
      //...
    }
  }
}