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中el、template、replace元素

    简单理解vue中el、template、replace元素

    这篇文章主要帮助大家简单理解vue中el、template、replace元素,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Vue.js单向绑定和双向绑定实例分析

    Vue.js单向绑定和双向绑定实例分析

    这篇文章主要介绍了Vue.js单向绑定和双向绑定,结合实例形式分析了vue.js单向绑定与双向绑定相关原理、实现方法及操作技巧,需要的朋友可以参考下
    2018-08-08
  • vue中使用vuex的超详细教程

    vue中使用vuex的超详细教程

    这篇文章主要介绍了vue中使用vuex的超详细教程,给大家介绍vue项目怎么使用,非常适合初学者使用,保存数据以及获取数据,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • vue如何清除浏览器历史栈

    vue如何清除浏览器历史栈

    这篇文章主要介绍了vue如何清除浏览器历史栈,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • vue3 源码解读之 time slicing的使用方法

    vue3 源码解读之 time slicing的使用方法

    这篇文章主要介绍了vue3 源码解读之 time slicing的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Vue.js的复用组件开发流程完整记录

    Vue.js的复用组件开发流程完整记录

    这篇文章主要给大家介绍了关于Vue.js的复用组件开发流程的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • ElementUI实现el-form表单重置功能按钮

    ElementUI实现el-form表单重置功能按钮

    本文主要介绍了Element使用el-form时,点击重置按钮或者取消按钮时会实现表单重置效果,具有一定的参考价值,感兴趣的可以了解一下
    2021-07-07
  • vue中使用路由改浏览器标题和图标

    vue中使用路由改浏览器标题和图标

    这篇文章主要介绍了vue中使用路由改浏览器标题和图标,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Element-ui el-tree新增和删除节点后如何刷新tree的实例

    Element-ui el-tree新增和删除节点后如何刷新tree的实例

    这篇文章主要介绍了Element-ui el-tree新增和删除节点后如何刷新tree的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 使用babel-plugin-import 实现自动按需引入方式

    使用babel-plugin-import 实现自动按需引入方式

    这篇文章主要介绍了使用babel-plugin-import 实现自动按需引入方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12

最新评论