小兔鲜商03

news2024/11/20 20:43:40

进入可视区加载数据:
首页有很多模块,如果一次性加载所有数据,很卡,,当移动到要显示的地方,才加载数据

使用 vueuse 库中 useIntersectionObserver方法,, 传入要监听的元素 target 和监听到这个target去加载的数据api,,, 返回api请求的数据

import { useIntersectionObserver } from '@vueuse/core'
import { ref } from 'vue'

/**
 * 懒加载组件数据,, 当组件进入可视区,再去加载
 * @param {Element} target  被监听的DOM
 * @param {Function} apiFn  发请求的api
 */
export const useLazyData = (target, apiFn) => {
  // api请求的数据
  const data = ref([])
  // stop停止观察
  const { stop } = useIntersectionObserver(
    // target 要监听的元素
    target, ([{ isIntersecting }], observerElement) => {
      if (isIntersecting) {
        // 进入可视区
        stop()
        apiFn().then(res => {
          data.value = res.result
        })
      }
    }, {
      // 触发的门槛,,只要相交就触发
      threshold: 0
    })

  return data
}

vue3中获取dom节点:
先声明一个响应式变量,,然后将这个响应式变量,指向你要绑定的节点


引入全局动画,,取名字为fade,,

在这里插入图片描述
在这里插入图片描述


有的函数,参数中需要传入另一个函数,,但是直接写函数名只能传入一个不带参数的函数,,可以用箭头函数返回一个带参数的函数

 const brands = useLazyData(target, () => findBrand(10))

img标签的事件:

  • load : 当图像成功加载并完全显示
  • error : 如果图像加载失败

图片懒加载:
监听图片是否进入可视区,,,先将图片src制空,等待图片进入可视区后,将图片的url赋值给src,,,加载图片
使用到的方法: IntersectionObserver 是浏览器原生提供的构造函数,,用来监听某个DOM是否进入可视区,,, ,返回一个observer监听器,,,

// 创建一个监听器
const observer = new IntersectionObserver(callback,options)

// 开始观察某个元素,, 可以同时观察多个
observer.observe(element1)
observer.observe(element2)
// 停止观察某个元素
observer.unobserve(xxx)

IntersectionObserver 中的参数:

  • callback : 监听触发的回调
    • callback的参数是一个数组,,因为可以同时监听多个元素,,每个元素都是一个IntersectionObserverEntry 对象,,这个对象中有很多属性,,比如: isIntersecting : 判断是否相交
  • options : 配置对象,,可以配置 threshold ,,触发的门槛,进入多少,触发
    在这里插入图片描述

引用:https://blog.csdn.net/qq_38629292/article/details/127200527

图片懒加载,,自定义了一个指令: v-lazy

  • vue3 自定义指令,,, vue3中自定义指令的钩子和组件的钩子是一样的:
    mounted()钩子中:
    • 第一个参数: 当前指令的DOM
    • 第二个参数: binding : 是当前指令传入的值
import XtxSkeleton from '@/components/library/xtx-skeleton'
import XtxCarousel from '@/components/library/xtx-carousel'
import XtxMore from '@/components/library/xtx-more'
import defaultImg from '@/assets/images/default.png'
export default {
  install (app) {
    // 导入组件
    app.component(XtxSkeleton.name, XtxSkeleton)
    app.component(XtxCarousel.name, XtxCarousel)
    app.component(XtxMore.name, XtxMore)
    app.directive('lazy', {
      mounted (el, binding) {
        const observer = new IntersectionObserver(([{ isIntersecting }]) => {
          if (isIntersecting) {
            // 加载之后不观察,不能重复加载
            observer.unobserve(el)
            // 指定传递的参数
            const imgUrl = binding.value

            el.src = imgUrl
            // 图片加载失败,设置默认图片
            el.onerror = () => {
              el.src = defaultImg
            }
          }
        }, {
          threshold: 0
        })

        // 观察这个元素
        observer.observe(el)
      }
    })
  }
}

面包屑组件:
vue中创建html内容方式:

  • el选项 直接绑定 html节点
  • template 选项
  • render() 函数动态渲染 ,, render中传入一个函数createElement 也可以写成 h , h(你要创建的标签,{标签的属性对象},z子节点)
    在这里插入图片描述

在这里插入图片描述
如果render存在,vue不会从template选项和el选项,创建指定元素,,而是使用render

获取组件插槽中的内容: this.$slots.default() , default表示获取的默认插槽,,默认插槽的名字叫default

面包屑组件: 使用render动态创建dom,,最后一个节点没有 箭头

问题

进入可视区加载数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/955130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE5打完包后,启动程序不能全屏

最近看到ue5的打包程序后不能默认自动全屏,效果如下,发现并不是全屏的,而且就算点击放大也不是全屏 解决办法:设置如下之后在打包就可以了 但是会一直打印错误的日志,不过这个不影响使用

【LeetCode算法系列题解】第1~5题

CONTENTS LeetCode 1. 两数之和(简单)LeetCode 2. 两数相加(中等)LeetCode 3. 无重复字符的最长子串(中等)LeetCode 4. 寻找两个正序数组的中位数(困难)LeetCode 5. 最长回文子串&am…

文献综述|针对图像描述模型的对抗样本攻击

前言:图像描述对抗攻击旨在通过攻击正常的图像描述模型,为正常输入图像添加扰动得到对抗样本,使得正常模型输出目标句子或目标关键词,现将当前相关工作大致汇总如下。本综述初写于2022年8月29日。 部分相关工作介绍 Shekhar 等在…

【使用DataEase数据可视化分析工具访问cpolar】

DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。 在本地搭建后,借助cpolar 内…

阿里云国际站不想自己充值怎么办?-unirech阿里云国际站代充

在阿里云国际版官网注册是需要绑定paypal或者visa卡才可以完成注册,但是很多网友表示没有这些,阿里云国际站不想自己充值怎么办?其实通过分销商Unirech来注册的话就完全不用担心这个问题了,因为可以直接省略这一步,阿里…

【Java从入门到大牛】IO流下篇

🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Java从入门到大牛 🌠 首发时间:2023年8月31日 🦋 欢迎关注🖱点赞👍收藏🌟留言&#x1f43…

RT-Thread自动初始化机制

自动初始化机制是指初始化函数不需要被显示调用,只需要在函数定义处通过宏定义的方式进行申明,就会在系统启动过程中被执行。 int rt_hw_usart_init(void) {rt_hw_serial_register(&serial1, "uart1",RT_DEVICE_FLAG_RDWR | RT_DEVICE_FL…

Web服务器简介及HTTP协议

一、HTPP请求/响应报文格式 1.客户端连接到Web服务器 一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.baidu.com(URL) 2.发送HTTP请求 通过TCP套接字&#xff…

C++哈希(散列)与unordered关联式容器封装(Map、Set)

一、unordered系列关联式容器 在C98中,STL提供了以红黑树为底层数据结构的关联式容器(map、set等),查询时的效率可以达到,最差情况下需要比较红黑树的高度次。因此在C11中,STL提供了四个unordered系列关联式容器&…

centos7 docker安装记录

以下所有命令都在root用户下进行,若为普通用户,需要在所有命令前加上 sudo。 1、更新yum包 将yum包更新到最新 yum update2、安装需要的软件包 yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的; yum …

中国移动加大布局长三角,打造算力产业新高地

8月27日,以“数实融合算启未来”为主题的2023长三角算力发展大会在苏州举办,大会启动了长三角算力调度枢纽,携手各界推动算力产业高质量发展。 会上,移动云作为第一批算力资源提供方,与苏州市公共算力服务平台签订算力…

机器人编程怎么入门?

机器人已经在我们中间存在了二三十年。如今,机器人在我们的文化中比以往任何时候都更加根深蒂固。大多数机器人机器用于各种装配线,或在世界各地的矿山或工业设施中执行密集的物理操作。 还有一些家用机器人,工程师正在对机器人进行编程&…

debug调试时,通过[[FunctionLocation]]找到函数在源代码中的位置

[[FunctionLocation]] 是 JavaScript 引擎内部的一个属性,用于记录函数在代码中的位置。它不是 JavaScript 语法的一部分,而是在调试和开发过程中用于追踪函数定义位置的一个辅助属性。 当我们在浏览器的开发者工具或其他调试工具中查看函数的属性时&am…

【C++】Visual Studio EditorConfig 格式设置

【C】Visual Studio EditorConfig 格式设置 文章目录 【C】Visual Studio EditorConfig 格式设置I - EditorConfig1.1 - 通用设置indent_styleindent_sizetab_widthend_of_linecharsettrim_trailing_whitespaceinsert_final_newline II - Visual Studio 特定键值缩进设置cpp_in…

Docker基础入门:Docker网络与微服务项目发布

Docker基础入门:Docker网络与微服务项目发布 一、前言二、Docker0理解2.1 ip a查看当前网络环境2.2 实战--启动一个tomact01容器(查看网络环境)2.3 实战--启动一个tomact02容器(查看网络环境)2.4 容器与容器之间的通信…

企业数据将作为资产被纳入财务报表?百望云建议企业做好三点准备

在数字化转型过程中,大家一直比较关心技术创新有哪些,我如何能快速使用?却经常忽略了更深层次的问题,如:数字化转型的价值效益“有哪些”、我的企业“怎么获取”、我的系统是否支持“价值传递”? 近日&…

Apipost:为什么是开发者首选的API调试工具

文章目录 前言正文接口调试接口公共参数、环境全局参数的使用快速生成并导出接口文档研发协作接口压测和自动化测试结论 前言 Apipost是一款支持 RESTful API、SOAP API、GraphQL API等多种API类型,支持 HTTPS、WebSocket、gRPC多种通信协议的API调试工具。除此之外…

不知道怎么归类的题型

爆破 weak_auth 进来看到 随便输入 知道账号名为admin,再爆破密码,从返回包中得到flag

【C++】多态学习

多态 多态的概念与定义多态的概念构成多态的两个条件虚函数与重写重写的两个特例 final 和 override重载、重写(覆盖)、重定义(隐藏)的对比抽象类多态的原理静态绑定与动态绑定 单继承与多继承关系下的虚函数表(派生类)单继承中的虚函数表查看多继承中的虚函数表查看 菱形继承与…

JavaScript Web APIs -03 事件流、事件委托、其他事件(加载、滚动、尺寸)

Web APIs - 03 文章目录 Web APIs - 03事件流捕获和冒泡阻止冒泡 事件委托其他事件页面加载事件元素滚动事件页面尺寸事件 元素尺寸与位置 进一步学习 事件进阶,实现更多交互的网页特效,结合事件流的特征优化事件执行的效率 掌握阻止事件冒泡的方法理解事…