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

淘宝客导购网站怎么做2024会爆发什么病毒

淘宝客导购网站怎么做,2024会爆发什么病毒,泉州定制网站建设,网站维护怎么做简介 在vue中重用代码的方式有:组件、组合式函数。组件是主要的构建模块,而组合式函数更偏重于有状态的逻辑。 指令系统给我们提供了例如:v-model、v-bind,vue系统允许我们自定义指令,自定义指令也是一种重用代码的方式…

简介

        在vue中重用代码的方式有:组件、组合式函数。组件是主要的构建模块,而组合式函数更偏重于有状态的逻辑。

        指令系统给我们提供了例如:v-model、v-bind,vue系统允许我们自定义指令,自定义指令也是一种重用代码的方式。自定义指令常用于封装一些普通元素的Dom底层访问逻辑。

定义

        一个自定义指令由一个包含类似组件生命周期钩子的对象来定义。钩子函数会接收到指令所绑定元素作为其参数。

        自定义指令的钩子函数如下:

const myDirective = {// 在绑定元素的 attribute 前// 或事件监听器应用前调用created(el, binding, vnode, prevVnode) {// 下面会介绍各个参数的细节},// 在元素被插入到 DOM 前调用beforeMount(el, binding, vnode, prevVnode) {},// 在绑定元素的父组件// 及他自己的所有子节点都挂载完成后调用mounted(el, binding, vnode, prevVnode) {},// 绑定元素的父组件更新前调用beforeUpdate(el, binding, vnode, prevVnode) {},// 在绑定元素的父组件// 及他自己的所有子节点都更新后调用updated(el, binding, vnode, prevVnode) {},// 绑定元素的父组件卸载前调用beforeUnmount(el, binding, vnode, prevVnode) {},// 绑定元素的父组件卸载后调用unmounted(el, binding, vnode, prevVnode) {}
}

 使用     

        下面这两个使用的例子都源自网络,在原有的基础上加入了一些改动  

        一个小栗子,使用全局自定义指令封装防抖代码段

export function preventReClick(app) {app.directive('preventReClick', {beforeMount(el, binding) {el.addEventListener('click', () => {if (!el.disabled) {el.disabled = truesetTimeout(() => {el.disabled = false}, binding.value || 3000)}})}})
}
import App from './App.vue'
import { preventReClick } from './utils/directivebox';const app = createApp(App)// 全局指令的挂载
preventReClick(app);
<template><div class="box"><!-- 这里必须使用el-button,因为这个防抖的功能是通过控制elementPlus中的disable属性实现的 --><el-button class="btn" v-preventReClick @click="buttonEvent">使用全局自定义指令,做防抖的处理</el-button></div>
</template>
<script setup>let clickNum = 0// 使用全局自定义指令处理防抖
/*运行后可以看到,在连续多次点击button时,3000ms后才会打印一次这个buttonEvent中的log因为在全局自定义指令中拦截了click的事件,在3000ms内组件被设置为disabled的状态*/
function buttonEvent() {clickNum++console.log("clickNum = ", clickNum); 
}</script>
<style scoped lang="less">
.box {display: flex;flex-direction: column;.btn {padding: 20px 40px 20px 40px;background-color: aquamarine;margin-bottom: 30px;}
}
</style>

 一个小栗子,使用局部自定义指令封装长按元素两秒的点击事件:

export const longpress = {created(el, binding, vNode) {// console.log("long press event 1");if (typeof binding.value !== 'function') {throw 'callback must be a function'}// 定义变量let pressTimer = null// 创建计时器( 2秒后执行函数 )let start = (e) => {if (e.type === 'click' && e.button !== 0) {return}if (pressTimer === null) {pressTimer = setTimeout(() => {handler()}, 2000)}}// 取消计时器let cancel = (e) => {if (pressTimer !== null) {clearTimeout(pressTimer)pressTimer = null}}// 运行函数const handler = (e) => {binding.value(e)}// 添加事件监听器el.addEventListener('mousedown', start)el.addEventListener('touchstart', start)// 取消计时器el.addEventListener('click', cancel)el.addEventListener('mouseout', cancel)el.addEventListener('touchend', cancel)el.addEventListener('touchcancel', cancel)},// 当传进来的值更新的时候触发updated(el, { value }) {el.$value = value},// 指令与元素解绑的时候,移除事件绑定unmounted(el) {el.removeEventListener('click', el.handler)},
}
<template><div class="box"><el-button class="btn" v-long-press="longPressEvent">使用全局自定义指令,实现长按处理事件</el-button></div>
</template>
<script setup>
import { longpress } from './utils/derective.js'// 在setup语法糖中使用v打头驼峰命名的方式声明一个局部的自定义指令
const vLongPress = longpress;function longPressEvent(){console.log("button的长按点击事件");
}</script>
<style scoped lang="less">
.box {display: flex;flex-direction: column;.btn {padding: 20px 40px 20px 40px;background-color: aquamarine;margin-bottom: 30px;}
}
</style>

小结

        注意:只有当所需功能只能通过直接的 DOM 操作来实现时,才应该使用自定义指令。其他情况下应该尽可能地使用 v-bind 这样的内置指令来声明式地使用模板,这样更高效,也对服务端渲染更友好。

    

http://www.ds6.com.cn/news/46851.html

相关文章:

  • wordpress自动封ip嘉兴关键词优化报价
  • 网站漂浮图片代码中国十大品牌策划公司
  • 网站自动适应屏幕成都seo工程师
  • 安徽兴罗建设集团网站seo网络优化专员
  • 松江做移动网站设计网络营销策划方案范文
  • 推广型网站开发网址南京高端品牌网站建设
  • 小程序制作收费兰州网站优化
  • wordpress linux 权限长沙seo关键词
  • 网络设计网站googleplay安卓版下载
  • 做网站的地方软件开发需要多少资金
  • 鞍山网站制作报价网络营销服务有哪些
  • 网站空间选择的主要原则有哪些最近三天发生的重要新闻
  • 新乡平原新区建设局网站百度百度一下你就知道主页
  • 彩票网站制作开发网站seo资讯
  • 免费网页游戏平台seo优化收费
  • 深圳城乡和建设局网站首页系统优化的例子
  • 青岛博彩做网站多少钱成都网站建设制作公司
  • 自己开个网站多少钱百度搜索引擎入口官网
  • 东莞专业做网站的公司有哪些百度关键词收费标准
  • 营销网站制作图片互联网营销顾问
  • 医院网站建设要求seo1现在怎么看不了
  • 公司的网站如何做网店营销与推广策划方案
  • 惠州做公司网站百度推广公司电话
  • 做网站沈阳关键词查找的方法有以下几种
  • 网站后台添加投票系统百度云网页版入口
  • 网站开发都需要什么软件手机网页制作
  • js可以做动态网站吗购买模板建站
  • 做网站贵么合肥最新消息今天
  • 电商个人营业执照注册网站排名优化方法
  • 顺德营销型网站一站式服务哪家好网络营销型网站