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

vue中實現(xiàn)監(jiān)聽數(shù)組內(nèi)部元素

 更新時間:2022年08月24日 08:51:18   作者:小道士在路上  
這篇文章主要介紹了vue中實現(xiàn)監(jiān)聽數(shù)組內(nèi)部元素方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue監(jiān)聽數(shù)組內(nèi)部元素

在VUE中,對數(shù)組的監(jiān)聽是淺監(jiān)聽,也就是它只能監(jiān)聽到數(shù)組的長度或者有無的變化,當我們修改數(shù)組中的某一個值時,也就是數(shù)組的長度狀態(tài)并沒有改變時,在正常情況下它是無法監(jiān)聽到的,在watch中我們知道可以使用deep屬性進行深監(jiān)聽,那么在其他情況下呢?

我們有兩種辦法解決此問題

1.通過原生的js對數(shù)組先進行切割,然后在添加新的內(nèi)容(也就是我們要修改的內(nèi)容)

array.splice(i, 1, newdata); ? ?//從i位置開始 ?刪除1個元素并用newdata來替代它

2.使用vue提供的函數(shù)$set

$set(array,i,newdata); ? //把array數(shù)組的第i的值替換為newdata

vue如何監(jiān)聽數(shù)組的變化

修改了數(shù)組對象的原型,在原本的原型鏈上插入了一個新的原型對象,在新的原型對象上重寫了7個變異方法(push/pop/unshift/shift/splice/sort/reverse)

var arrayProto = Array.prototype
var newArrayProto = Object.create(arrayProto)
newArrayProto.push = function (...rest) {
    // 監(jiān)聽到調(diào)用了數(shù)組的push方法,執(zhí)行視圖渲染的代碼
    console.log('監(jiān)聽到調(diào)用了數(shù)組的push方法,執(zhí)行視圖渲染的代碼,添加之前的邏輯。。。。')

    // 為了保留原來的數(shù)組push方法的邏輯
    arrayProto.push.call(this, ...rest)

    console.log('數(shù)組push方法添加之后的邏輯,。。。。。')
}
// 在遞歸遍歷數(shù)據(jù)的時候,只要找到數(shù)組數(shù)據(jù),就將其原型指向為newArrayProto
// arr.__proto__ = newArrayProto
var arr = [1,2,3]
arr.__proto__ = newArrayProto

在這里插入圖片描述

為什么沒有像對象一樣用Object.defineProperty監(jiān)聽數(shù)組中所有的元素變化呢?

因為數(shù)組中的元素有可能有很多個,如果循環(huán)遍歷,開銷太大!不能這樣。。。Vue給我們提供了支持驅(qū)動視圖的API(this.$set,Vue.set),還有重寫了7個變異方法

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

相關(guān)文章

  • 解決vuejs項目里css引用背景圖片不能顯示的問題

    解決vuejs項目里css引用背景圖片不能顯示的問題

    今天小編就為大家分享一篇解決vuejs項目里css引用背景圖片不能顯示的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue滑動吸頂及錨點定位的示例代碼

    vue滑動吸頂及錨點定位的示例代碼

    這篇文章主要介紹了vue滑動吸頂及錨點定位的示例代碼,代碼簡單易懂,非常不錯對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • vue2使用?element表格展開功能渲染子表格的方式

    vue2使用?element表格展開功能渲染子表格的方式

    這篇文章主要介紹了vue2使用?element表格展開功能渲染子表格的方式,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • 詳解iview的checkbox多選框全選時校驗問題

    詳解iview的checkbox多選框全選時校驗問題

    這篇文章主要介紹了詳解iview的checkbox多選框全選時校驗問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • 使用Vue.js開發(fā)微信小程序開源框架mpvue解析

    使用Vue.js開發(fā)微信小程序開源框架mpvue解析

    這篇文章主要介紹了使用Vue.js開發(fā)微信小程序開源框架mpvue解析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • vue中import導入三種方式詳解

    vue中import導入三種方式詳解

    在使用vue開發(fā)項目的時候,很多使用會import很多模塊,這篇文章主要給大家介紹了關(guān)于vue中import導入三種方式的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • vue中數(shù)組常用的6種循環(huán)方法代碼示例

    vue中數(shù)組常用的6種循環(huán)方法代碼示例

    在vue項目開發(fā)中,我們需要對數(shù)組進行處理等問題,這里簡單記錄遍歷數(shù)組的幾種方法,這篇文章主要給大家介紹了關(guān)于vue中數(shù)組常用的6種循環(huán)方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • Vue源碼cached解析

    Vue源碼cached解析

    最近在寫閉包的應用的時候,出現(xiàn)了一個cached函數(shù),來源于Vue源碼,利用了閉包變量不會被回收的特點,可以緩存變量,cached本質(zhì)上是一個高階函數(shù),它接受一個函數(shù)的參數(shù),同時返回一個函數(shù)
    2022-08-08
  • vue中@click和@click.native.prevent的區(qū)別

    vue中@click和@click.native.prevent的區(qū)別

    這篇文章主要介紹了vue中@click和@click.native.prevent的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue antd Form表單的使用及說明

    vue antd Form表單的使用及說明

    這篇文章主要介紹了vue antd Form表單的使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評論