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

蓝色清爽网站wordpress会员中心添加头像上传

蓝色清爽网站,wordpress会员中心添加头像上传,h5网页设计模板,谷歌浏览器下载安卓版hooks 是什么 vue3使用了composition API,我们可自定义封装hooks,达到复用,在Vue2中采取的mixins,对mixins而言, hooks更清楚复用功能代码的来源, 更清晰易懂。 简单来说:hooks 就是函数的一种写法&#xf…

hooks 是什么

vue3使用了composition API,我们可自定义封装hooks,达到复用,在Vue2中采取的mixins,对mixins而言, hooks更清楚复用功能代码的来源, 更清晰易懂。

简单来说:hooks 就是函数的一种写法,就是将文件的一些单独功能的 js 代码进行抽离出来进行封装使用 

 自定义 hook 需要满足的规范

具备可复用功能,才需要抽离为 hooks 独立文件

函数名前缀加上use开头,形如: useXX

合理利用Vue提供的响应式函数及生命周期

暴露出 变量 或 方法 提供外部需要时使用

 Hooks 常用 工具

src/hooks/index.ts

倒计时hooks 

import { ref, Ref, onBeforeMount } from 'vue';/***  倒计时hooks*  @param {Number} second 倒计时秒数*  @return {Number} count 倒计时秒数*  @return {Function} countDown 倒计时函数*  @example*  const { count, countDown } = useCountDown()*  countDown(60)*  <div>{{ count }}</div>*/export function useCountDown() {// 定义函数参数和返回值类型const count: Ref<number> = ref(0);const timer: Ref<NodeJS.Timeout | null> = ref(null);const countDown = (second: number, callback?: () => void) => {if (count.value === 0 && timer.value === null) {// 如果提供了回调函数,则调用它if (callback) callback();count.value = Number(second);timer.value = setInterval(() => {count.value--;if (count.value === 0) {clearInterval(timer.value!);timer.value = null;}}, 1000);}};onBeforeMount(() => {// 确保 timer 有值再清除timer.value && clearInterval(timer.value);});return {count,countDown,};
}
<template><button :disabled="count !== 0" @click="countDown(3, logCountdown)">倒计时剩余 {{ `${count}秒` }} </button>
</template><script lang="ts" setup name="HomePage">import { useCountDown } from '@/hooks';// 倒计时const { count, countDown } = useCountDown();const logCountdown = () => {console.log('触发倒计时回调函数');};
</script>

防抖hooks

import { ref, Ref, onBeforeMount } from 'vue';/*** 防抖hooks* @params {Function} fn  需要防抖的函数 delay 防抖时间* @returns {Function} debounce 防抖函数* @example* const { debounce } = useDebounce()* const fn = () => { console.log('防抖') }* const debounceFn = debounce(fn, 1000)* debounceFn()*/// 防抖函数的类型
interface DebounceFunction {(fn: (...args: any[]) => void, delay: number): (...args: any[]) => void;
}export function useDebounce(): { debounce: DebounceFunction } {const debounce: DebounceFunction = (fn, delay) => {let timer: ReturnType<typeof setTimeout> | null = null;return function (this: any, ...args: any[]) {if (timer) clearTimeout(timer);timer = setTimeout(() => {fn.apply(this, args);}, delay);};};return { debounce };
}
<template><button @click="debounceClick">防抖点击</button>
</template><script lang="ts" setup name="HomePage">import { useDebounce } from '@/hooks';// 防抖const { debounce } = useDebounce();const fn = () => {console.log('取消点击一秒后打印');};const debounceClick = debounce(fn, 1000);
</script>

节流hooks

import { ref, Ref, onBeforeMount } from 'vue';/*** 节流hooks* @params {Function} fn  需要节流的函数 delay 节流时间* @returns {Function} throttle 节流函数* @example* const { throttle } = useThrottle()* const fn = () => { console.log('节流') }* const throttleFn = throttle(fn, 1000)* throttleFn()*/// 节流函数的类型
interface ThrottleFunction {(fn: (...args: any[]) => void, delay: number): (...args: any[]) => void;
}export function useThrottle(): { throttle: ThrottleFunction } {const throttle: ThrottleFunction = (fn, delay) => {let timer: ReturnType<typeof setTimeout> | null = null;return function (this: any, ...args: any[]) {if (!timer) {timer = setTimeout(() => {fn.apply(this, args);timer = null;}, delay);}};};return { throttle };
}
<template><button @click="throttleClick">节流点击</button>
</template><script lang="ts" setup name="HomePage">import { useThrottle } from '@/hooks';const fn = () => {console.log('一秒内只打印一次');};const { throttle } = useThrottle();const throttleClick = throttle(fn, 1000);
</script>
http://www.yayakq.cn/news/347520/

相关文章:

  • 网站建设必须在服务器微网站预约网站开发
  • 海城做网站公司怎么申请一个域名
  • 制作论文招聘网站的wordpress 3d翻书特效
  • 权重的网站厦门网红
  • 开州快速建网站郴州网签备案查询系统
  • 拖拽式建站平台查找网站建设历史记录
  • 企业网站建立流程wordpress讨论吧
  • 江西建设厅网站查询施工员苏州微网站建设公司哪家好
  • 昆山建设局网站表格下强的网站建设公
  • 网站设计和内容上的不足和建议网站建设与用户需求分析
  • 济南正规网站建设公司河北省住房和城乡建设部网站
  • 开发网站设计公司wordpress主题不分页
  • 哈尔滨制作企业网站徐州市建设工程交易中心
  • 专业微网站制作门户网站建设信息工作讲话
  • 上海建设网站的公司温州市网络问政平台
  • 珠海航展表演青岛seo排名收费
  • 开平市网站建设做调查的网站推荐
  • 网站购物商城功能模块图浦东网站建设哪家好
  • 金华哪里做网站网站搭建技术有哪些
  • 网站排名易下拉系统wordpress 企业 主题
  • 网站建设收费流程冠辰网站
  • 上海知名的网站建设彬县网
  • 多新闻怎么做扁平网站网站建设最好的公司
  • 深圳做网站那里好做网站的公司利润
  • 西安网站建设收费标准saas系统是干嘛的
  • 外贸网站国际化怎么做蓝色网站特点
  • 深圳做网站最好的公司九江网站建设优化公司
  • 做网站工资怎么样门户网站建设方案 模板
  • 网站建设网站建设教程wordpress图片暗箱
  • 拿word如何做网站佛山网站优化有