vue uniapp 防止按钮多次点击的三种实现方式
最近的项目完成后,在性能优化阶段需要做按钮的防止重复点击功能,下面是我考虑过的一些实现方法以及弊端
方法一:使用防抖节流实现--
不选择原因:它们都是控制单位时间(比如设置1500秒)内禁止操作,但是如果网络慢的情况下,超过了1500秒,那用户是可以继续点击第N遍的,也就是说,我上一个请求还没结束,我就可以开始第二个请求了,也就是重复点击,重复请求了,所以此方法不适合我这里用。
方法二:请求里面写回调,如下代码--
// 确定
config() {
// this.isDisabled = true // true,允许点击
if (!this.isDisabled) return
this.isDisabled = false
const findParam = {
"id": uni.getStorageSync('login_user_info').username,
"remarks": this.remarks
}
submitApi(findParam).then(res => {
// 在返回结果里面执行
if (res.data.success) {
this.isDisabled = true
} else {
this.isDisabled = true
}
}).catch(err => {
this.isDisabled = true
})
}不选择原因:通过代码可以看到,我是等接口请求结果出来之后,才可以继续点击按钮的,这个方法是可行的,可以满足我的需求,但还不是最优解,因为我需要改的页面太多了,接着往下看。
方法三:在请求拦截器和响应拦截器里面控制,如下代码--
// 这里只展示控制点击事件主要内容
http.interceptor.request((config, cancel) => { /* 请求之前拦截器 */
// 显示loading
uni.showLoading({
title: "加载中",
mask: true, // 显示透明蒙层,防止触摸穿透
});
config.header = {
...config.header,
'X-Access-Token':getTokenStorage()
}
return config
})
// 必须使用异步函数,注意
http.interceptor.response(async (response) => { /* 请求之后拦截器 */
uni.hideLoading() // 关闭loading
return response
}, (response) => {
// 请求错误做点什么
uni.hideLoading() // 关闭loading
return response
})我这里使用了全局Loading,这个方法是符合我的需求的。
文章到这里就结束了,大家可以根据自己的需要,选择使用哪一种方式
到此这篇关于vue uniapp 防止按钮多次点击的三种实现方式的文章就介绍到这了,更多相关vue uniapp 防止按钮多次点击内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
vue axios sessionID每次请求都不同的原因以及修改方式
这篇文章主要介绍了vue axios sessionID每次请求都不同的原因以及修改方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12
vue项目ElementUI组件中el-upload组件与图片裁剪功能组件结合使用详解
这篇文章主要介绍了vue项目ElementUI组件中el-upload组件与图片裁剪功能组件结合使用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-03-03
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
这篇文章主要介绍了vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-06-06


最新评论