<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      pinia - 為 antdv 表格添加加載狀態

      前言

      我們之前制作的 Vue3 + AntDesign Vue + SpringBoot 的增刪改查小 Demo 的功能已經全部實現了,但是還是有一點不完美,在發送請求到后端返回數據這一段時間內前臺未做任何響應。不過以我們現在的數據量和網速來說問題不大,請求時間最長也不過幾百毫秒,不會影響日常使用體驗。不過在網絡環境不太好或者數據量很大的情況下則會給用戶帶來非常糟糕的體驗,其在點擊按鈕到數據返回到瀏覽器這一段時間內無法知道自己是否向服務器發起了請求,以及當前頁面是否是可操作的。如果用戶在點擊按鈕后發現頁面沒有響應,則有可能對當前頁面進行操作,那么數據有可能在用戶操作頁面的過程中被瀏覽器接收從而導致用戶操作的丟失,也可能發生其他的未知錯誤。

      大部分用戶在點擊了刷新按鈕而頁面沒有發生變化時會選擇重復點擊按鈕,而我們要在瀏覽器承購接收到數據之前對頁面做點什么,例如將按鈕的狀態設置為 disable,或者為 table 設置一個 loading 的狀態,因為之前做的小 Demo 沒有刷新按鈕,則采用后者來提升用戶體驗。

      為了模擬網絡較差環境下的用戶體驗,我們采用瀏覽器的 網速限制 功能來將網絡切換至 3G

      • 打開瀏覽器 -> f12 進入控制臺 -> 選擇 「性能」

        • Chrome

        • Edge

        • FireFox

          f12 控制臺 -> 網絡

      Pinia

      也借此機會引入一個 Vue3 的狀態管理工具: pinia

      它類似與 Vuex,用法和功能也都大相徑庭

      安裝與引入:

      • 安裝:
        npm install pinia

      • main.ts 中注冊:

        import { createPinia } from "pinia";
        
        const pinia = createPinia();
        createApp(App).use(pinia).mount('#app')
        

      新建 src/store/mainStore.ts

      import { defineStore } from 'pinia'
      import {ref} from "vue";
      
      
      // 第一個參數是應用程序中 store 的唯一 id
      export const useMainStore = defineStore('main', () => {
          const tableLoading = ref(true);
          // ↑ 定義一個表格加載狀態, true 為正在加載
      
          // ↓ 兩個方法,改變表格加載狀態
          function tableLoading2true() {
              tableLoading.value = true;
          }
          function tableLoading2false() {
              tableLoading.value = false;
              console.log(tableLoading.value);
          }
      
          return {
              tableLoading,
              tableLoading2true,
              tableLoading2false,
          }
      })
      

      在頁面中注冊

      • script

        const mainStore = useMainStore();
        
      • template

      <a-table
        ...
        :loading="mainStore.tableLoading"
      >
      

      由于我們之前在 mainStore.ts 中設置了 tableLoading 的值為 true,所以無論在何時 table 的狀態都會是 loading

      完善接口

      我們現在已經可以使用 pinia 來控制全局變量的狀態,但是總不能每次改變 tableloading 狀態時都手動切換。還記得之前在定義 mainStore.ts 中我們在 defineStore 內添加了兩個方法么?可以使用它們來操控數據的狀態。

      我們要做的是:在點擊按鈕(查找/翻頁)或者點擊刷新的瞬間,也就是發起請求的時候 讓 tableLoading 的值為 true,后端返回結果后將值變為 false

      明確了需求,接下來 完善代碼:

      由于我們所有的接口請求都放在了 src/api/fruitApi.ts 內,只需要在在內部請求請求的方法里添加相關代碼即可。

      import {useMainStore} from "@/store/mainStore";
      
      // 引入 store
      const mainStore = useMainStore();
      
      export function getFruitRequest(...) {
        ...
        mainStore.tableLoading2true();
        axios({
          ...
        })
        .finally(() => {
          ...
          mainStore.tableLoading2false();
        })
      }
      

      測試

      動圖就不放了,各位看官心領神會 ??

      posted @ 2022-10-16 16:28  HuStoking  閱讀(276)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品乱人码一区二区二区| 精品无套挺进少妇内谢| 国产精品自在线拍国产手机版| 爱色精品视频一区二区| 成熟丰满熟妇av无码区| 亚洲av中文乱码一区二| 林州市| 日韩高清免费一码二码三码| 极品尤物被啪到呻吟喷水| 丁香婷婷在线观看| 亚洲国产精品人人做人人爱| 国产白丝jk捆绑束缚调教视频| 国产精品一区二区不卡91| 亚洲乱理伦片在线观看中字| 久久精品国产福利一区二区| 一本大道av人久久综合| 亚洲国产午夜精品理论片| 2022最新国产在线不卡a| 免费看又黄又无码的网站| 免费人成网站免费看视频| 91久久偷偷做嫩草影院免费看| 午夜亚洲AV日韩AV无码大全 | 强奷白丝美女在线观看| 69人妻精品中文字幕| 男女爽爽无遮挡午夜视频| 一本大道色婷婷在线| 自拍视频一区二区三区四区| 亚洲一区二区精品偷拍| 国内少妇人妻偷人精品| 亚洲欧美精品一中文字幕| 无码人妻av免费一区二区三区| 欧美成人黄在线观看| 浮梁县| 亚洲免费成人av一区| 99www久久综合久久爱com| 91密桃精品国产91久久| 精品国产女同疯狂摩擦2| 中文字幕一区二区人妻| 特级做a爰片毛片免费看无码| 亚洲中文无码手机永久| 亚洲国产精品乱码一区二区|