欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

談談對vue響應式數(shù)據更新的誤解

 更新時間:2017年08月01日 15:20:16   作者:楊小福  
本篇文章主要介紹了談談對vue響應式數(shù)據更新的誤解,深入了解了vue響應式數(shù)據,有興趣的可以了解一下

對于剛接觸vue的同學會經常遇到數(shù)據更新了但是模板沒有更新的問題,下面將結合vue的響應式特性以及異步更新機制分析常見的錯誤:

異步更新帶來的數(shù)據響應式誤解

異步數(shù)據的處理基本是一定會遇到的,處理不好就會遇到數(shù)據不更新的問題,但有一種情況是在未正確處理的情況下也能正常更新,這就會造成一種誤解,詳情如下所示:

模板

<div id="app">
    <h2>{{dataObj.text}}</h2>
</div>

js

new Vue({
      el: '#app',
      data: {
        dataObj: {}
      },
      ready: function () {
        var self = this;

        /**
         * 異步請求模擬
         */
        setTimeout(function () {
          self.dataObj = {}; 
          self.dataObj['text'] = 'new text';
        }, 3000);
      }
    })

上面的代碼非常簡單,我們都知道vue中在data里面聲明的數(shù)據才具有響應式的特性,所以我們一開始在data中聲明了一個dataObj空對象,然后在異步請求中執(zhí)行了兩行代碼,如下:

self.dataObj = {}; 
self.dataObj['text'] = 'new text';

首先清空原始數(shù)據,然后添加一個text屬性并賦值。到這里為止一切都如我們所想的,數(shù)據和模板都更新了。

那么問題來了,dataObj.text具有響應式的特性嗎?

模板更新了,應該具有響應式特性,如果這么想那么你就已經走入了誤區(qū),一開始我們并沒有在data中聲明.text屬性,所以該屬性是不具有響應式的特性的。

但模板切切實實已經更新了,這又是怎么回事呢?

那是因為vue的dom更新是異步的,即當setter操作發(fā)生后,指令并不會立馬更新,指令的更新操作會有一個延遲,當指令更新真正執(zhí)行的時候,此時.text屬性已經賦值,所以指令更新模板時得到的是新值。

具體流程如下所示:

  1. self.dataObj = {};發(fā)生setter操作
  2. vue監(jiān)測到setter操作,通知相關指令執(zhí)行更新操作
  3. self.dataObj['text'] = 'new text';賦值語句
  4. 指令更新開始執(zhí)行

所以真正的觸發(fā)更新操作是self.dataObj = {};這一句引起的,所以單看上述例子,具有響應式特性的數(shù)據只有dataObj這一層,它的子屬性是不具備的。

對比示例:

模板

<div id="app">
    <h2>{{dataObj&&dataObj.text}}</h2>
</div>

js

new Vue({
      el: '#app',
      data: {
        dataObj: {}
      },
      ready: function () {
        var self = this;

        /**
         * 異步請求模擬
         */
        setTimeout(function () {
          self.dataObj['text'] = 'new text';
        }, 3000);
      }
    })

上述例子的模板是不會更新的。

Vue.$set

通過$set方法可以將添加一個具備響應式特性的屬性,并且其子屬性也具備響應式特性,但是必須是新屬性才可以,如果是本身已有的屬性該方法是不起作用的。

new Vue({
      el: '#app',
      data: {
        dataObj: {}
      },
      ready: function () {
        var self = this;

        /**
         * 異步請求模擬
         */
        setTimeout(function () {
          var data = {
            name: 'xiaofu',
            age: 18
          };
          var data01 = {
            name: 'yangxiaofu',
            age: 19
          };
          self.dataObj['person'] = {};
          self.$set('dataObj.info', data);
          self.$set('dataObj.person', data01); 
        }, 3000);
      }
    })

如上所示, .person屬性是不具備響應式特性的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 解決vue項目中type=”file“ change事件只執(zhí)行一次的問題

    解決vue項目中type=”file“ change事件只執(zhí)行一次的問題

    這篇文章主要介紹了vue項目中解決type=”file“ change事件只執(zhí)行一次的問題,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2018-05-05
  • Vue打包上線之后部分CSS不生效問題的解決辦法

    Vue打包上線之后部分CSS不生效問題的解決辦法

    在vue項目中開發(fā)環(huán)境的樣式沒問題,但是打包上線后,樣式不生效,下面這篇文章主要給大家介紹了關于Vue打包上線之后部分CSS不生效問題的解決辦法,需要的朋友可以參考下
    2022-12-12
  • vue中的event bus非父子組件通信解析

    vue中的event bus非父子組件通信解析

    本篇文章主要介紹了 vue中的event bus非父子組件通信解析 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • vue學習筆記之slot插槽基本用法實例分析

    vue學習筆記之slot插槽基本用法實例分析

    這篇文章主要介紹了vue學習筆記之slot插槽基本用法,結合實例形式分析了vue slot插槽基本使用方法與操作注意事項,需要的朋友可以參考下
    2020-02-02
  • vue3將頁面生成pdf導出的操作指南

    vue3將頁面生成pdf導出的操作指南

    最近工作中有需要將一些前端頁面(如報表頁面等)導出為pdf的需求,下面這篇文章主要給大家介紹了關于vue3 如何將頁面生成 pdf 導出,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • element中async-validator異步請求驗證使用

    element中async-validator異步請求驗證使用

    本文主要介紹了element中async-validator異步請求驗證使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • vue實現(xiàn)書籍購物車功能

    vue實現(xiàn)書籍購物車功能

    這篇文章主要為大家詳細介紹了vue實現(xiàn)書籍購物車功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Vue中實現(xiàn)在線畫流程圖的方法

    Vue中實現(xiàn)在線畫流程圖的方法

    最近在調研一些在線文檔的實現(xiàn),包括文檔編輯器、在線思維導圖、在線流程圖等,本文分享在Vue框架下基于metaeditor-mxgraph實現(xiàn)在線流程圖,感興趣的朋友一起看看吧
    2024-07-07
  • Vue之Element級聯(lián)選擇器多選傳值以及回顯方式(樹形結構)

    Vue之Element級聯(lián)選擇器多選傳值以及回顯方式(樹形結構)

    這篇文章主要介紹了Vue之Element級聯(lián)選擇器多選傳值以及回顯方式(樹形結構),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • vue 3.x 中mixin封裝公用方法應用方式

    vue 3.x 中mixin封裝公用方法應用方式

    這篇文章主要介紹了vue 3.x 中mixin封裝公用方法應用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論