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

深入理解vue.js中$watch的oldvalue與newValue

 更新時間:2017年08月07日 09:33:05   作者:zuank  
這篇文章主要給大家介紹了關于vue.js中$watch的oldvalue與newValue的相關資料,文中通過示例代碼介紹的非常詳細,并且介紹了關于watch的其他測試,對大家學習或者使用vue.js具有一定的參考學習價值,需要的朋友們下面跟著小編來一起看看吧。

$watch中的oldvalue和newValue

大家都知道,在vue.js中給我們提供了$watch的方法來做對象變化的監(jiān)聽,而且在callback中會返回兩個對象,分別是oldValue和newValue.

顧名思義,這兩個對象就是對象發(fā)生變化前后的值。

但是在使用過程中我發(fā)現(xiàn)這兩個值并不總是預期的。下面來一起看看詳細的介紹:

定義data的值

data: {
 arr: [{
  name: '笨笨',
  address: '上海'
 }, {
  name: '笨笨熊',
  address: '北京'
 }],
 obj: {
  name: '呆呆',
  address: '蘇州'
 },
 str: '哈哈哈'
 }

定義watch

watch: {
 arr: function(newValue, oldValue) {
  console.log(newValue, oldValue)
  console.log(JSON.stringify(oldValue) === JSON.stringify(newValue))
 },
 obj: function(newValue, oldValue) {
  console.log(newValue, oldValue)
  console.log(JSON.stringify(oldValue) === JSON.stringify(newValue))
 },
 str: function(newValue, oldValue) {
  console.log(newValue, oldValue)
  console.log(JSON.stringify(oldValue) === JSON.stringify(newValue))
 },
 }

定義事件觸發(fā)

methods: {
 test() {
  this.arr.push({
  name: 9
  })
  this.$set(this.obj, 'i', 0)
  this.str = ''
 },
 test1() {
  this.arr = [{
  name: '000'
  }]
  this.obj = {
  name: 999
  }
  this.str = '123'
 }
 }

測試結果為

  1. 對數(shù)組進行push操作和對Obj進行$set操作,雖然都可能觸發(fā)watch事件,但是在callback返回的結果中,oldValue和newValue相同。字符串對象如預期返回
  2. 在對數(shù)組和Obj統(tǒng)一進行賦值操作時,watch觸發(fā)并且oldValue和newValue如預期返回

關于watch的其他測試

不能夠觸發(fā)監(jiān)聽的

1、數(shù)組

        修改某個下標的某個屬性的值

        使用原生delete刪除某個屬性

        對某個下標新增一個屬性(不使用$set)

        對某個下標重新賦值

2、對象

        修改某個屬性的值(但是會觸發(fā)這個屬性的監(jiān)聽)

        新增一個屬性(不使用$set)

        原生delete刪除某個屬性

以上總結可能存在不足

萬金油實現(xiàn)watch監(jiān)聽

在修改完數(shù)據(jù)后添加這樣一段代碼

array

arr = [...arr]

obj

obj = {...obj}

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • 瀏覽器事件循環(huán)與vue nextTicket的實現(xiàn)

    瀏覽器事件循環(huán)與vue nextTicket的實現(xiàn)

    這篇文章主要介紹了瀏覽器事件循環(huán)(結合vue nextTicket)的實現(xiàn)方法,需要的朋友可以參考下
    2019-04-04
  • vue懶加載和子組件懶加載的區(qū)別詳解

    vue懶加載和子組件懶加載的區(qū)別詳解

    這篇文章主要給大家介紹了vue懶加載和子組件懶加載有什么區(qū)別,Vue懶加載指的是對圖片等資源的延遲加載,而子組件懶加載則是指延遲加載組件實例,文中通過代碼示例給大家講解的非常詳細,需要的朋友可以參考下
    2023-12-12
  • Vue.js仿Select下拉框效果

    Vue.js仿Select下拉框效果

    這篇文章主要為大家詳細介紹了Vue.js仿 Select下拉框效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Vue使用自定義指令實現(xiàn)拖拽行為實例分析

    Vue使用自定義指令實現(xiàn)拖拽行為實例分析

    這篇文章主要介紹了Vue使用自定義指令實現(xiàn)拖拽行為,結合實例形式分析了Vue使用自定義指令實現(xiàn)拖拽行為具體步驟、原理與操作注意事項,需要的朋友可以參考下
    2020-06-06
  • 如何修改ant?design組件自帶樣式

    如何修改ant?design組件自帶樣式

    這篇文章主要介紹了如何修改ant?design組件自帶樣式問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • vue.js實現(xiàn)用戶評論、登錄、注冊、及修改信息功能

    vue.js實現(xiàn)用戶評論、登錄、注冊、及修改信息功能

    這篇文章主要為大家詳細介紹了vue.js實現(xiàn)用戶評論、登錄、注冊、及修改信息功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Vue兩個同級組件傳值實現(xiàn)

    Vue兩個同級組件傳值實現(xiàn)

    Vue組件之間是有聯(lián)系的,避免不了組件之間要互相傳值,那么如何實現(xiàn)Vue兩個同級組件傳值,本文就來介紹一下,感興趣的可以了解一下
    2021-07-07
  • Vue項目移動端滾動穿透問題的實現(xiàn)

    Vue項目移動端滾動穿透問題的實現(xiàn)

    這篇文章主要介紹了Vue項目移動端滾動穿透問題的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • 基于element-ui中el-select下拉框選項過多的優(yōu)化方案

    基于element-ui中el-select下拉框選項過多的優(yōu)化方案

    這篇文章主要介紹了基于element-ui中el-select下拉框選項過多的優(yōu)化方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Vue在頁面數(shù)據(jù)渲染完成之后的調(diào)用方法

    Vue在頁面數(shù)據(jù)渲染完成之后的調(diào)用方法

    今天小編就為大家分享一篇Vue在頁面數(shù)據(jù)渲染完成之后的調(diào)用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09

最新評論

金川县| 巴马| 尼玛县| 克山县| 刚察县| 措勤县| 榆树市| 柯坪县| 平顺县| 富川| 北辰区| 溆浦县| 蛟河市| 鄂尔多斯市| 西城区| 泸溪县| 定襄县| 明水县| 文水县| 固阳县| 广宗县| 宝坻区| 威信县| 平果县| 卢氏县| 林甸县| 万荣县| 太白县| 桂东县| 万年县| 营口市| 望谟县| 新建县| 宜兰县| 万盛区| 上饶市| 定襄县| 无棣县| 石嘴山市| 开平市| 双辽市|