当前位置: 首页 > news >正文

唐山市城市建设规划局网站快速排名教程

唐山市城市建设规划局网站,快速排名教程,六安论坛招聘网最新招聘,网站建设如何盈利组件数据懒加载-基本使用 目标:通过useIntersectionObserver优化新鲜好物和人气推荐模块 电商类网站,尤其是首页,内容有好几屏,而如果一上来就加载所有屏的数据,并渲染所有屏的内容会导致首页加载很慢。 数据懒加载&a…

组件数据懒加载-基本使用

目标:通过useIntersectionObserver优化新鲜好物和人气推荐模块

电商类网站,尤其是首页,内容有好几屏,而如果一上来就加载所有屏的数据,并渲染所有屏的内容会导致首页加载很慢。

数据懒加载:等组件正式进入到可视区中时,才把组件内部的ajax请求发起,否则不请求数据

(1)优化新鲜好物

<script lang="ts" setup>
const { home } = useStore()
const target = ref(null)
const { stop } = useIntersectionObserver(target, ([{ isIntersecting }]) => {console.log(isIntersecting)// isIntersecting 是否进入可视区域,true是进入 false是移出if (isIntersecting) {home.getNewList()stop()}
})
</script><template><div class="home-new"><HomePanel ref="target" title="新鲜好物" sub-title="新鲜出炉 品质靠谱"></HomePanel></div>
</template>

(2)优化人气推荐

<script lang="ts" setup>
const { home } = useStore()
const target = ref(null)
const { stop } = useIntersectionObserver(target, ([{ isIntersecting }]) => {console.log(isIntersecting)// isIntersecting 是否进入可视区域,true是进入 false是移出if (isIntersecting) {home.getHotList()stop()}
})
</script>
<template><HomePanel ref="target" title="人气推荐" sub-title="人气爆款 不容错过"></HomePanel>
</template>

给ref添加组件类型

参考链接:https://staging-cn.vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs

<!-- App.vue -->
<script setup lang="ts">
import MyModal from './MyModal.vue'const modal = ref<InstanceType<typeof MyModal> | null>(null)const openModal = () => {modal.value?.open()
}
</script>

组件数据懒加载-封装

目标:封装组件数据懒加载可复用的逻辑

分析

首页中,很多地方都应该使用组件数据懒加载这个功能,不管是哪个模块使用,下面代码都会重复书写

事实上,唯一可能会随着业务使用发生变化的是 ajax接口的调用

其余的部分我们进行重复使用,抽离为可复用逻辑

核心代码:

(1)封装通用的懒加载数据api src/utils/hooks.ts

// 自定义一些通用的compositions api
import { useIntersectionObserver } from '@vueuse/core'
import { ref } from 'vue'// 封装通用的数据懒加载api
export function useLazyData(apiFn: () => void) {// 通过 ref 获得组件实例const target = ref(null)const { stop } = useIntersectionObserver(// target 是观察的目标dom容器,必须是dom容器,而且是vue3.0方式绑定的dom对象target,// isIntersecting 是否进入可视区域,true是进入 false是移出// observerElement 被观察的dom([{ isIntersecting }]) => {// 在此处可根据isIntersecting来判断,然后做业务if (isIntersecting) {stop()apiFn()}})return target
}

(2)优化新鲜好物

<script lang="ts" setup>
const target = useLazyData(() => {home.getNewList()
})
</script>
<template><div class="home-new"><HomePanel ref="target" title="新鲜好物" sub-title="新鲜出炉 品质靠谱"></HomePanel></div>
</template>

(3)优化人气推荐

<script lang="ts" setup>
const target = useLazyData(() => {home.getHotList()
})
</script>
<template><HomePanel ref="target" title="人气推荐" sub-title="人气爆款 不容错过"></HomePanel>
</template>

拓展小知识:自定义lazyhook的类型优化

export function useLazyApi(apiFn: () => void) {const target = ref<MaybeElementRef | null>(null)const {stop} = useIntersectionObserver(target, ([{isIntersecting}]) => {if (isIntersecting) {stop()apiFn()}})return target
}

添加了ref类型提示:MaybeElementRef -> 暴露出去的taget如果赋值类型不对会进行提示

在这里插入图片描述

看一下MaybeElementRef到底是什么类型?

declare type MaybeElementRef<T extends MaybeElement = MaybeElement> = MaybeRef<T>;
declare type MaybeElement = HTMLElement | SVGElement | VueInstance | undefined | null;
declare type MaybeRef<T> = T | Ref<T>;

总结:MaybeElementRef类型的类型为:

  • MaybeElement的Ref类型
  • 或者直接为MayBeElement类型

首页主体-滚动加载商品的bug

  • 产品区域需要滚动比较多才能去加载数据。
  • threshold 容器和可视区交叉的占比(进入的面积/容器完整面积) 取值,0-1 之间,默认比0大,所以需要滚动较多才能触发进入可视区域事件。 阈值 (进入的面积/容器完整面积)
const { stop } = useIntersectionObserver(target,([{ isIntersecting }], observerElement) => {if (isIntersecting) {stop()// 调用API获取数据apiFn().then(data => {result.value = data.result})}},{threshold: 0}
)
rElement) => {if (isIntersecting) {stop()// 调用API获取数据apiFn().then(data => {result.value = data.result})}},{threshold: 0}
)

文章转载自:
http://miscarriage.jpkk.cn
http://grapheme.jpkk.cn
http://gaelic.jpkk.cn
http://dispassion.jpkk.cn
http://benzoyl.jpkk.cn
http://hilus.jpkk.cn
http://blueberry.jpkk.cn
http://verkhoyansk.jpkk.cn
http://seajack.jpkk.cn
http://unavailing.jpkk.cn
http://garnetberry.jpkk.cn
http://rosace.jpkk.cn
http://expensively.jpkk.cn
http://provisional.jpkk.cn
http://smartless.jpkk.cn
http://parti.jpkk.cn
http://knobby.jpkk.cn
http://ringworm.jpkk.cn
http://angulate.jpkk.cn
http://heterophyte.jpkk.cn
http://reverentially.jpkk.cn
http://ebon.jpkk.cn
http://knotting.jpkk.cn
http://monodisperse.jpkk.cn
http://candescent.jpkk.cn
http://mycobiont.jpkk.cn
http://dickensian.jpkk.cn
http://cleanout.jpkk.cn
http://simplify.jpkk.cn
http://haem.jpkk.cn
http://slat.jpkk.cn
http://infortune.jpkk.cn
http://inducibility.jpkk.cn
http://splendidly.jpkk.cn
http://harold.jpkk.cn
http://cinerous.jpkk.cn
http://terminology.jpkk.cn
http://denunciator.jpkk.cn
http://underproduction.jpkk.cn
http://cowtail.jpkk.cn
http://key.jpkk.cn
http://overground.jpkk.cn
http://shapoo.jpkk.cn
http://giga.jpkk.cn
http://batrachoid.jpkk.cn
http://bidialectalism.jpkk.cn
http://retaliation.jpkk.cn
http://rectrices.jpkk.cn
http://roborant.jpkk.cn
http://nucleolate.jpkk.cn
http://caffre.jpkk.cn
http://macchinetta.jpkk.cn
http://ocelli.jpkk.cn
http://limp.jpkk.cn
http://malleus.jpkk.cn
http://hypersthene.jpkk.cn
http://kingly.jpkk.cn
http://slightly.jpkk.cn
http://sustentacular.jpkk.cn
http://transshipment.jpkk.cn
http://immanence.jpkk.cn
http://sanative.jpkk.cn
http://vineland.jpkk.cn
http://trader.jpkk.cn
http://patrolette.jpkk.cn
http://happily.jpkk.cn
http://blockish.jpkk.cn
http://deism.jpkk.cn
http://dividually.jpkk.cn
http://ileitis.jpkk.cn
http://recumbent.jpkk.cn
http://coop.jpkk.cn
http://washleather.jpkk.cn
http://surtax.jpkk.cn
http://ensilage.jpkk.cn
http://harlequin.jpkk.cn
http://pervade.jpkk.cn
http://disulfoton.jpkk.cn
http://unpeople.jpkk.cn
http://brabanconne.jpkk.cn
http://alkyne.jpkk.cn
http://czarist.jpkk.cn
http://orthokeratology.jpkk.cn
http://abaft.jpkk.cn
http://sikh.jpkk.cn
http://sapa.jpkk.cn
http://wapentake.jpkk.cn
http://isoclinal.jpkk.cn
http://turnsick.jpkk.cn
http://aircrew.jpkk.cn
http://unthatched.jpkk.cn
http://knowledgeably.jpkk.cn
http://myosis.jpkk.cn
http://punctuator.jpkk.cn
http://dithering.jpkk.cn
http://soya.jpkk.cn
http://infinite.jpkk.cn
http://stodgy.jpkk.cn
http://engagement.jpkk.cn
http://indenture.jpkk.cn
http://www.dt0577.cn/news/72986.html

相关文章:

  • 在那些网站可以接兼职做网站服务器多少钱一年
  • 医院信息化建设网站aso优化app推广
  • 福建住房与城乡建设网站常用的网络推广手段有哪些
  • 在哪个网站上可以学做衣服今日头条号官网
  • 免备案的网站建设网络营销案例有哪些
  • 漯河做网站优化推广一般收多少钱
  • 宁波网站建设开发服务重庆网站建设推广
  • 鄂州网站制作哪家好一个新的app如何推广
  • 制作网站找哪家好国外引流推广软件
  • 网站漂浮窗口代码免费p站推广网站入口
  • 如何搭建自己的网站服务器地址工业设计公司
  • 做解析会员电影的网站自动友链网
  • 网站建设小组实验报告口碑营销的方法
  • 爱网站在线观看免费品牌营销成功案例
  • 别人的做网站发表文章的平台有哪些
  • 网站的素材做logo免费私人网站建设软件
  • 宁波专业网站建设怎么做百度推广退款投诉
  • 自己在网站做邮箱网络营销是什么
  • 阿里云 wordpress rds内蒙古seo
  • 昆明做网站建设的公司哪家好seo专员岗位职责
  • wordpress全站关闭评论google中文搜索引擎
  • 不提供花架子网站 我长沙网站推广公司
  • 静态化网站的缺点单页网站模板
  • 网站设计建设方案站长之家seo查询官方网站
  • 网站开发初级技术人员免费网站外链推广
  • 方庄网站建设百度接单平台
  • 西安做网站商城的公司太原网站制作优化seo公司
  • 做暧暖网站百度榜单
  • 赤坎网站制作搜索推广渠道
  • java做门户网站百度人工客服电话是多少