一、VueUse是什么
VueUse不是Vue.use,它是为Vue 2和3服务的一套Vue Composition API的常用工具集,
是目前世界上Star最高的同类型库之一。它的初衷就是将一切原本并不支持响应式的JS API
变得支持响应式,省去程序员自己写相关代码。
二、安装
npm i @vueuse/core
三、引入
import {useWindowScroll} from "@vueuse/core";
四、使用过的记录一下
1. useWindowScroll --- 实现可视屏幕的滚动距离
import {useWindowScroll} from "@vueuse/core";
const {y} = useWindowScroll();
2. useIntersectionObserver --- 实现组件数据懒加载
* 自定义useLazyData.js Hooks
import {ref} from "vue";
import {useIntersectionObserver} from "@vueuse/core";
export function useLazyDate(apiFn) {
const target = ref(null);
const result = ref(null);
const {stop} = useIntersectionObserver(
target,
([{isIntersecting}]) => {
console.log("懒加载", isIntersecting);
if (isIntersecting) {
stop();
apiFn().then((res) => {
result.value = res.result;
});
}
},
{threshold: 0}
);
return {target, result};
}
* apiFn(api/home.js)
export function getProducts() {
return request("/home/goods",'get');
}
* 在vue文件中使用
<script setup>
import {useLazyDate} from "@/hooks/useLazyDate";
import { getProducts } from "@/api/home";
const { target, result: products } = useLazyDate(getProducts);
</script>
<template>
<div class="lazy-page" v-for="item in products" ref="target"></div>
</template>