vue项目怎么阻止很快速的点击两次然后提交的两次请求

解决方案:我这里暂时使用的方案一

方案一:申明一个变量,点击时置灰提交按钮。等接口调用结束放开按钮,就是你在点击之后,ajax请求完成之前将那个按钮禁止点击

<template>
<div>
    <!-- 其他代码 -->
    <button v-if="canSave" @click="save">提交</button>
    <button v-else disabled>提交</button>
</div>
</template>
<script>
export default {
    data(){
        return {
            canSave: true,
        }
    },
    methods: {
        save(){
            if(!canSave){
                return;
            }
            this.canSave = false;
            // AJAX 结束后 this.canSave = true;
        },
    }
}
</script>

方案二:加防抖
我觉得“节流”和“去抖”应该结合在一起:间隔时间段内,只执行一次。

方案三:其实所有的接口请求都有这个需求,因此可以对ajax封装一个代理层

代理层可以做两个事情

缓存接口返回数据,可以缓存到sessionstorage,也可以缓存到内存,相同的请求先访问缓存
给每个请求接口加状态,未请求、请求中、已完成。未请求时去请求接口,同时把此接口状态置为请求中;请求中时再请求接口,将回调保存起来,接口数据返回以后,将数据存储到缓存,一起回调;已完成时请求接口,直接从缓存中读取数据,不再请求接口
这样,不光是vue项目,也不光是post或者提交表单,所有的接口请求都具备了你需要的能力。

发布了109 篇原创文章 · 获赞 91 · 访问量 33万+

猜你喜欢

转载自blog.csdn.net/qq_36410795/article/details/100739873