程序员书籍笔记 程序员书籍笔记
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • Vue

    • Vue基础
    • Vue前置知识
    • webpack
    • Vue基本使用
    • Vue基本使用+
    • Vue组件
    • Vue生命周期
    • Vue生命周期+
    • Vue插槽
    • Vue组件库
    • 网易云音乐案例
    • 案例
    • Vuex
    • Vue3.0
    • vue动画
    • 项目常用

      • 基于组合API的数据懒加载组件
        • 数据懒加载
        • 基于vueuse
          • 参数解释
          • 使用
      • 图片懒加载自定义指令
    • 问题记录

    • vue模板
  • Nuxt

  • Echarts

  • Node

  • git

  • express

  • 微信小程序

  • Spring

  • 后端知识

  • Markdown

  • project

  • 自用文档查询

  • 框架和软件
  • Vue
  • 项目常用
yuadh
2022-05-09
目录

基于组合API的数据懒加载组件

# 数据懒加载

# 基于vueuse

实现当组件进入可视区域在加载数据

import {useIntersectionObserve} from "@vueuse/core"
import {ref} from "vue"

export const useLazyData = (apiFn) =>{
	const result = ref([])
	const target = ref(null)
	const {stop} = useIntersectionObserve(target,
		([{isIntersecting}],observerElement)=>{
			if(isIntersecting){
				stop()
                apiFn().then(data=>{
                    result.value = data.result
                })
			}
		},
        {threshold:0}                                  
	)
    return {result,target}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 参数解释

  • apiFn 请求接口函数
  • target 监听的目标元素
  • isIntersecting 是否进入可视区域标志
  • stop stop是赋予的监听事件函数 stop() 停止监听
  • threshold 相交点,就是进入多少范围的视口算进入可视区

# 使用

<template>
	<div ref="target">
        <div v-for=" i in data"></div>
    </div>
</template>

<script>
import {useLazyData} from "@/hooks/index"
export default{
    setup(){
        const {target,result} = useLazyData(findNew)
        return {goods:result,target}
    }
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

target 的使用可以是传递进 target 作为监听事件,也可以是使用调用函数的返回值挂载到 标签 中

编辑 (opens new window)
上次更新: 2023/02/07, 14:51:48
vue动画
图片懒加载自定义指令

← vue动画 图片懒加载自定义指令→

Theme by Vdoing | Copyright © 2021-2023 yuadh
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×