詳解vue數(shù)據(jù)響應(yīng)式原理之?dāng)?shù)組
更新時(shí)間:2022年02月13日 12:06:30 作者:前端阿龍
這篇文章主要為大家詳細(xì)介紹了vue數(shù)據(jù)響應(yīng)式原理之?dāng)?shù)組,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
src/core/observer/index.js

src/core/observer/array.js arrayMethods

- 當(dāng)data的數(shù)組對象中本來沒有某個(gè)屬性,然后點(diǎn)擊按鈕動(dòng)態(tài)增加某個(gè)屬性的時(shí)候,此時(shí)此屬性是沒有g(shù)et和set的,也就是沒有響應(yīng)式機(jī)制,如果想要讓你動(dòng)態(tài)增加的某個(gè)屬性有響應(yīng)式變化,那么就直接在數(shù)據(jù)的源頭給他初始化這個(gè)屬性,具體看下一條。
- 當(dāng)向后端返回的結(jié)果的數(shù)組對象中新增屬性的時(shí)候,建議首先循環(huán)賦值完成之后再賦值給對應(yīng)的data中的變量,這樣data中變量給每個(gè)數(shù)組對象里面的屬性都會(huì)加上get和set
- 例如:后端返回一個(gè)數(shù)組對象是 [{xx: 1},{xx: 2}],然后我們獲取到這個(gè)數(shù)組對象后把這個(gè)數(shù)組對象賦值給了this.list,那么我的data中的list的兩個(gè)數(shù)組對象中的xx屬性就有g(shù)et和set了,換句話說就是響應(yīng)式的了,如果我們想要點(diǎn)擊按鈕的時(shí)候動(dòng)態(tài)給當(dāng)前數(shù)組對象中增加一個(gè)cc屬性,this.list[0].cc = 2, 請注意 此時(shí)cc屬性雖然添加到了我們對應(yīng)的數(shù)組對象中,但是它不是響應(yīng)式的,想要解決這個(gè)問題,那就直接在獲取后端的數(shù)據(jù)的時(shí)候直接循環(huán)添加cc屬性,設(shè)置為空,然后再賦值給this.list就行了
調(diào)試

- 我們可以看到上面的數(shù)組在最開始第一步的時(shí)候只有[1,2,3] 三個(gè)元素,然后當(dāng)我們執(zhí)行了push方法后增加了一個(gè)元素,且視圖也實(shí)時(shí)更新了,這是因?yàn)樵谠创a中vue對修改數(shù)組的方法做了響應(yīng)式的處理
- 我們再看第三第四部修改list數(shù)組也生效了,但是視圖并沒有實(shí)時(shí)更新,這是因?yàn)関ue在對數(shù)組的處理上面只修改了一些數(shù)組的方法和對數(shù)組中對象增加了響應(yīng)式的操作,這是因?yàn)閿?shù)組可能有很長,出于性能的考慮,沒有對數(shù)組的每一個(gè)元素都做響應(yīng)式的處理。如果我們想實(shí)現(xiàn)第三第四步響應(yīng)式可以使用數(shù)組的splice方法就行了
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
如何解決d3.event在v7版本無效影響zoom拖拽縮放問題
這篇文章主要介紹了如何解決d3.event在v7版本無效影響zoom拖拽縮放問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue3中createWebHistory和createWebHashHistory的區(qū)別詳析
這篇文章主要給大家介紹了關(guān)于Vue3中createWebHistory和createWebHashHistory區(qū)別的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-06-06
深入了解vue-router原理并實(shí)現(xiàn)一個(gè)小demo
這篇文章主要為大家詳細(xì)介紹了vue-router原理并實(shí)現(xiàn)一個(gè)小demo,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
vue實(shí)現(xiàn)高德地圖添加多個(gè)點(diǎn)標(biāo)記
地圖多點(diǎn)標(biāo)注其實(shí)是個(gè)非常簡單的問題,這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)高德地圖添加多個(gè)點(diǎn)標(biāo)記的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
vue定時(shí)器設(shè)置和關(guān)閉頁面時(shí)關(guān)閉定時(shí)器方式
這篇文章主要介紹了vue定時(shí)器設(shè)置和關(guān)閉頁面時(shí)關(guān)閉定時(shí)器方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
vue-admin-template模板添加tagsview的實(shí)現(xiàn)
本文主要介紹了vue-admin-template模板添加tagsview的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04

