最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue的異步數據更新機制與$nextTick用法解讀

 更新時間:2023年03月28日 08:37:33   作者:liguoyuan819  
這篇文章主要介紹了vue的異步數據更新機制與$nextTick用法解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue異步數據更新機制與$nextTick

vue異步更新dom

vue的響應式更新dom是異步執(zhí)行的,不是數據發(fā)生變化之后dom立即發(fā)生變化,而是按照一定的邏輯更新dom。

具體是vue在檢測到數據變化時,vue將開啟一個隊列,,并緩沖在同一事件循環(huán)中發(fā)生的所有數據變更。如果同一個 watcher 被多次觸發(fā),只會被推入到隊列中一次。這在緩沖中去除重復數據造成的額外的dom操作和計算是非常必要的。在下一個nextTick中,vue執(zhí)行的是已經去重的實際工作。

理解:vue執(zhí)行dom更新時異步的,這個異步任務可以當成是一個promise的微任務,對同一個屬性值進行多次賦值時,只有最后一次賦值會作為一個promise微任務放到更新隊列里面。

$nextTick執(zhí)行機制

Vue會異步更新DOM,會在當前執(zhí)行棧的最后更新DOM,這個與JavaScript的原生操作dom有很大區(qū)別。vue中的$nextTick再JavaScript中相當于微任務,會在當前所有同步任務執(zhí)行完之后再執(zhí)行,$nextTick會得到dom更新后的結果。最后頁面渲染是在始終是在微任務執(zhí)行之后在執(zhí)行的,所以$nextTick回調執(zhí)行時還沒有渲染,頁面上看不到更新后的結果。

vue執(zhí)行異步更新的目的

vue更新dom的流程:觸發(fā)setter --> 監(jiān)聽watcher --> 重新渲染 render --> 生成虛擬dom (vdom)--> 更新dom 。如果每一次都執(zhí)行該流程會非常消耗性能,所以使用異步更新DOM的機制,先對數據修改進行整合去重,再使用最終的結果一次性對DOM進行更新。

vue異步數據更新問題

記錄一下出現的問題, 數據翻倍

這是復現問題的代碼

 data() {
    return {
      space: "",
      allresult: []
    };
  },
  methods: {
    getmessage() {
      this.allresult = [];
      axios
        .get(
          "https://gist.githubusercontent.com/xiaolannuoyi/9b0defe4959e71fa97e6096cc4f82ba4/raw/4be939123d488cee7ecefc055fb5ecb2ed8d5c8d/test"
        )
        .then(data => {
          console.log(data);
          let result = data.data;
          for (let i = 0; i < result.length; i++) {
            //原因在于這里的this.Allresult
            this.allresult.push({
              id: result[i].id,
              name: result[i].name,
              age: result[i].age
            });
            
          }
            console.log('此時的this.allresult',this.allresult);
        });
    }
  },
  watch: {
    space() {
      console.log("watch");
      this.getmessage();
    }
  },
  mounted() {
    this.space = "123";
    console.log("mounted");
    this.getmessage();
  }

結果

在這里插入圖片描述

此時你可以看到第二次的數據時 是 第一次的 2倍

原因

mounted 和 watch 都執(zhí)行 getmessage 方法,雖然方法之前 對數據進行了清空,但是 異步請求執(zhí)行的慢,

所以兩次調用getmessage相當于 this.allresult = []; this.allresult = []; axios...;axios....: 這個順序

所以才會出現上述現象

解決

1.修改this.allresult = []的位置

在這里插入圖片描述

2.新建一個臨時空數組

在這里插入圖片描述

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • vue中v-model失效原因以及解決方案

    vue中v-model失效原因以及解決方案

    這篇文章主要給大家介紹了關于vue中v-model失效原因以及解決方案的相關資料,vue的v-model是一個雙向綁定的數據流,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • Vue.js處理API請求失敗的最佳實踐和策略

    Vue.js處理API請求失敗的最佳實踐和策略

    在現代Web開發(fā)中,與后端API的交互是不可避免的,然而,網絡請求是不穩(wěn)定的,可能會因為各種原因失敗,因此,優(yōu)雅地處理API請求失敗的情況是提升用戶體驗和應用穩(wěn)定性的關鍵,本文將詳細介紹在Vue.js中處理API請求失敗的最佳實踐和策略,需要的朋友可以參考下
    2024-12-12
  • Vue組件設計-滾動置頂設計案例

    Vue組件設計-滾動置頂設計案例

    這篇文章主要介紹了Vue組件設計-滾動置頂設計案例,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • vue中循環(huán)請求接口參數問題及解決

    vue中循環(huán)請求接口參數問題及解決

    這篇文章主要介紹了vue中循環(huán)請求接口參數問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • element滾動條組件el-scrollbar的使用詳解

    element滾動條組件el-scrollbar的使用詳解

    本文主要介紹了element滾動條組件el-scrollbar的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • vue-plugin-hiprint 詳細使用

    vue-plugin-hiprint 詳細使用

    這篇文章主要介紹了vue-plugin-hiprint 詳細使用說明,使用Vue.Draggable庫構建可拖拽元素的示例,你可以根據具體需求和技術選型選擇適合的庫或方法來實現可拖拽元素的功能,需要的朋友可以參考下
    2023-08-08
  • Vue.js中this如何取到data和method里的屬性詳解

    Vue.js中this如何取到data和method里的屬性詳解

    methods屬性是一個對象,通常我們會在這個對象中定義很多的方法,下面這篇文章主要給大家介紹了關于Vue.js中this如何取到data和method里的屬性,需要的朋友可以參考下
    2022-12-12
  • Vue中使用及封裝websocket示例詳解

    Vue中使用及封裝websocket示例詳解

    這篇文章主要為大家介紹了Vue中使用及封裝websocket示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • vue中$nexttick,$set,$forceupdate的區(qū)別

    vue中$nexttick,$set,$forceupdate的區(qū)別

    本文主要介紹了vue中$nexttick,$set,$forceupdate的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • element el-tree組件的動態(tài)加載、新增、更新節(jié)點的實現

    element el-tree組件的動態(tài)加載、新增、更新節(jié)點的實現

    這篇文章主要介紹了element el-tree組件的動態(tài)加載、新增、更新節(jié)點的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02

最新評論

灌阳县| 芮城县| 台东县| 和龙市| 南靖县| 巴南区| 明水县| 微山县| 麦盖提县| 湄潭县| 句容市| 卓尼县| 彭泽县| 滨州市| 昭通市| 通辽市| 中西区| 丹东市| 比如县| 崇礼县| 五常市| 玛沁县| 周至县| 密云县| 阳山县| 美姑县| 永城市| 乳山市| 苍南县| 宁海县| 名山县| 凉城县| 甘肃省| 汾西县| 荥阳市| 辽中县| 万安县| 城口县| 仁怀市| 马关县| 大姚县|