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

网站的静态页面用什么做建网站找哪个公司

网站的静态页面用什么做,建网站找哪个公司,亚马逊网站建设资料,网站 多少篇文章才能上线在 Vue3 和 Element Plus 项目中,防止按钮重复点击是一个常见的需求,特别是在表单提交、支付等场景下。以下是几种实现方式: 1. 使用 Element Plus 的 loading 状态 Element Plus 的按钮组件本身就支持 loading 状态,这是最简单…

在 Vue3 和 Element Plus 项目中,防止按钮重复点击是一个常见的需求,特别是在表单提交、支付等场景下。以下是几种实现方式:

1. 使用 Element Plus 的 loading 状态

Element Plus 的按钮组件本身就支持 loading 状态,这是最简单的方式:

vue

复制

下载

<template><el-button type="primary" :loading="loading" @click="handleSubmit">提交</el-button>
</template><script setup>
import { ref } from 'vue';const loading = ref(false);const handleSubmit = async () => {loading.value = true;try {// 执行异步操作await submitForm();} finally {loading.value = false;}
};
</script>

2. 自定义指令实现防重复点击

可以创建一个全局指令来实现防重复点击:

javascript

复制

下载

// directives.js
import { Directive } from 'vue';export const preventReClick: Directive = {mounted(el, binding) {el.addEventListener('click', () => {if (!el.disabled) {el.disabled = true;setTimeout(() => {el.disabled = false;}, binding.value || 2000);}});}
};// main.js
import { preventReClick } from './directives';
app.directive('prevent-reclick', preventReClick);

使用方式:

vue

复制

下载

<el-button v-prevent-reclick="1000" @click="handleClick">提交</el-button>

3. 使用装饰器(适用于组合式 API)

可以创建一个可组合函数来防止重复点击:

javascript

复制

下载

// composables/usePreventReClick.js
import { ref } from 'vue';export function usePreventReClick() {const isClicking = ref(false);const preventReClick = async (fn) => {if (isClicking.value) return;isClicking.value = true;try {await fn();} finally {isClicking.value = false;}};return {isClicking,preventReClick};
}

ts,usePreventReClick.ts

import { ref } from "vue";type AsyncFunction = () => Promise<void>;/*** 防止重复点击 hook* @returns*/
export function usePreventReClick() {const isClicking = ref(false);const preventReClick = async (fn: AsyncFunction) => {if (isClicking.value) {return;}isClicking.value = true;try {await fn();} finally {isClicking.value = false;}};return {isClicking,preventReClick};
}

使用方式:

vue

复制

下载

<script setup>
import { usePreventReClick } from './composables/usePreventReClick';const { isClicking, preventReClick } = usePreventReClick();const handleSubmit = () => {preventReClick(async () => {// 执行提交逻辑await submitForm();});
};
</script><template><el-button :loading="isClicking" @click="handleSubmit">提交</el-button>
</template>

4. 封装高阶组件

如果需要更复杂的控制,可以封装一个高阶组件:

vue

复制

下载

<!-- PreventReClickButton.vue -->
<template><el-button v-bind="$attrs" :loading="loading" @click="handleClick"><slot></slot></el-button>
</template><script setup>
import { ref } from 'vue';const props = defineProps({onClick: {type: Function,required: true},delay: {type: Number,default: 1000}
});const loading = ref(false);const handleClick = async () => {if (loading.value) return;loading.value = true;try {await props.onClick();} finally {setTimeout(() => {loading.value = false;}, props.delay);}
};
</script>

使用方式:

vue

复制

下载

<PreventReClickButton type="primary" :onClick="submitForm"
>提交
</PreventReClickButton>

总结

以上方法各有优缺点,根据项目需求选择:

  1. 简单场景:直接使用 Element Plus 的 loading 状态

  2. 全局控制:使用自定义指令

  3. 组合式 API:使用可组合函数

  4. 复杂组件:封装高阶组件

http://www.dtcms.com/wzjs/239558.html

相关文章:

  • 网络营销推广代理seo优化师
  • 平台赚钱谷歌广告优化
  • 松花江避暑城建设网站站长之家站长工具
  • 五莲网站制作互联网seo是什么
  • 潍坊做公司网站建立网站的步骤
  • 如何建设风水网站广告公司起名大全最新
  • 怎么制作网页链接在微信上发seo优化服务
  • 陕西建设网官方网站百度推广培训班
  • 怎么做教育培训网站培训机构招生方案
  • 网站开发合同有效期免费域名注册网站
  • 房地产手机网站模板关键词热度查询工具
  • 企业网络营销企业网站建设章节习题上海今天刚刚发生的新闻
  • 个人或主题网站建设实验体会关键词点击价格查询
  • 网站制作完成后为了seo网站管理招聘
  • seo 网站 结构百度云网盘搜索引擎
  • 暗网网站有那些优化营商环境指什么
  • 做像58这种分类信息网站赚钱吗网络营销推广活动
  • 微信公众平台申请官网专业seo网站
  • 收费用的网站怎么做已备案域名交易平台
  • 怎么做网站后台品牌推广的方式有哪些
  • 团购汽车最便宜的网站建设武汉seo关键词优化
  • 外国炫酷网站百度的网站网址
  • 谷歌优化seo四川整站优化关键词排名
  • 专注做蔬菜的网站石狮seo
  • wordpress isux主题seo新手教程
  • 西安市建设工程信息网招投标业务平台seo手机端优化
  • wordpress html5视频seo网站关键词优化报价
  • 山西自助建站费用低seo发外链工具
  • 品牌网站建设维护seo关键词工具
  • 做网站需要vps吗网页制作接单