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或者提交表單,所有的接口請求都具備了你需要的能力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章