vue uniapp 防止按钮多次点击的三种实现方式

 更新时间:2023年08月25日 09:08:39   作者:Promise-proto  
最近的项目完成后,在性能优化阶段需要做按钮的防止重复点击功能,本文主要介绍了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-router的matched实现面包屑功能

    基于vue-router的matched实现面包屑功能

    本文主要介绍了基于vue-router的matched实现面包屑功能,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • vue性能优化之cdn引入vue-Router的问题

    vue性能优化之cdn引入vue-Router的问题

    这篇文章主要介绍了vue性能优化之cdn引入vue-Router的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Vue.Draggable使用文档超详细总结

    Vue.Draggable使用文档超详细总结

    Vue拖拽组件(Draggable)是一个允许与View-Model同步进行拖放排序的Vue组件,下面这篇文章主要给大家介绍了关于Vue.Draggable使用文档的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Vue中常见的几种传参方式小结

    Vue中常见的几种传参方式小结

    Vue组件的使用不管是在平常工作还是在面试面试中,都是频繁出现的,下面这篇文章主要给大家介绍了关于Vue中常见的几种传参方式的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 详解如何在Vue2中实现useDraggable

    详解如何在Vue2中实现useDraggable

    这篇文章主要为大家详细介绍了Vue2中实现useDraggable的相关知识,文中的示例代码简洁易懂,对我们深入了解vue有一定的帮助,需要的小伙伴可以参考下
    2023-12-12
  • 写一个Vue loading 插件

    写一个Vue loading 插件

    这篇文章主要介绍了如何写一个Vue loading 插件,帮助大家更好的理解和学习vue 插件的相关知识,感兴趣的朋友可以了解下
    2020-11-11
  • Vue编写自定义Plugin详解

    Vue编写自定义Plugin详解

    这篇文章主要介绍了Vue编写自定义Plugin详解,在Vue开发中,我们经常需要使用一些第三方库或功能性模块,Vue插件就是一种将这些库或模块集成到Vue应用中的方式,插件是Vue.js提供的一种机制,用于扩展Vue的功能,需要的朋友可以参考下
    2023-08-08
  • vue项目中的组件传值方式

    vue项目中的组件传值方式

    这篇文章主要介绍了vue项目中的组件传值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • vuejs2.0运用原生js实现简单拖拽元素功能

    vuejs2.0运用原生js实现简单拖拽元素功能

    这篇文章主要为大家详细介绍了vuejs2.0运用原生js实现简单拖拽元素功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)

    Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)

    这篇文章主要介绍了Vue组件模板形式实现对象数组数据循环为树形结构,本文用vue实现方式,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-07-07

最新评论