詳解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à)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
src/core/observer/index.js
src/core/observer/array.js arrayMethods
- 當(dāng)data的數(shù)組對(duì)象中本來(lái)沒(méi)有某個(gè)屬性,然后點(diǎn)擊按鈕動(dòng)態(tài)增加某個(gè)屬性的時(shí)候,此時(shí)此屬性是沒(méi)有g(shù)et和set的,也就是沒(méi)有響應(yīng)式機(jī)制,如果想要讓你動(dòng)態(tài)增加的某個(gè)屬性有響應(yīng)式變化,那么就直接在數(shù)據(jù)的源頭給他初始化這個(gè)屬性,具體看下一條。
- 當(dāng)向后端返回的結(jié)果的數(shù)組對(duì)象中新增屬性的時(shí)候,建議首先循環(huán)賦值完成之后再賦值給對(duì)應(yīng)的data中的變量,這樣data中變量給每個(gè)數(shù)組對(duì)象里面的屬性都會(huì)加上get和set
- 例如:后端返回一個(gè)數(shù)組對(duì)象是 [{xx: 1},{xx: 2}],然后我們獲取到這個(gè)數(shù)組對(duì)象后把這個(gè)數(shù)組對(duì)象賦值給了this.list,那么我的data中的list的兩個(gè)數(shù)組對(duì)象中的xx屬性就有g(shù)et和set了,換句話說(shuō)就是響應(yīng)式的了,如果我們想要點(diǎn)擊按鈕的時(shí)候動(dòng)態(tài)給當(dāng)前數(shù)組對(duì)象中增加一個(gè)cc屬性,this.list[0].cc = 2, 請(qǐng)注意 此時(shí)cc屬性雖然添加到了我們對(duì)應(yīng)的數(shù)組對(duì)象中,但是它不是響應(yīng)式的,想要解決這個(gè)問(wèn)題,那就直接在獲取后端的數(shù)據(jù)的時(shí)候直接循環(huán)添加cc屬性,設(shè)置為空,然后再賦值給this.list就行了
調(diào)試
- 我們可以看到上面的數(shù)組在最開(kāi)始第一步的時(shí)候只有[1,2,3] 三個(gè)元素,然后當(dāng)我們執(zhí)行了push方法后增加了一個(gè)元素,且視圖也實(shí)時(shí)更新了,這是因?yàn)樵谠创a中vue對(duì)修改數(shù)組的方法做了響應(yīng)式的處理
- 我們?cè)倏吹谌谒牟啃薷膌ist數(shù)組也生效了,但是視圖并沒(méi)有實(shí)時(shí)更新,這是因?yàn)関ue在對(duì)數(shù)組的處理上面只修改了一些數(shù)組的方法和對(duì)數(shù)組中對(duì)象增加了響應(yīng)式的操作,這是因?yàn)閿?shù)組可能有很長(zhǎng),出于性能的考慮,沒(méi)有對(duì)數(shù)組的每一個(gè)元素都做響應(yīng)式的處理。如果我們想實(shí)現(xiàn)第三第四步響應(yīng)式可以使用數(shù)組的splice方法就行了
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Vue項(xiàng)目中如何運(yùn)用vuex的實(shí)戰(zhàn)記錄
如果說(shuō)是JQuery是手工作坊,那么Vue.js就像是一座工廠,雖然Vue.js做的任何事情JQuery都可以做,但無(wú)論是代碼量還是流程規(guī)范性都是前者較優(yōu),下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中如何運(yùn)用vuex的相關(guān)資料,需要的朋友可以參考下2021-09-09vue2+element-ui使用vue-i18n進(jìn)行國(guó)際化的多語(yǔ)言/國(guó)際化詳細(xì)教程
這篇文章主要給大家介紹了關(guān)于vue2+element-ui使用vue-i18n進(jìn)行國(guó)際化的多語(yǔ)言/國(guó)際化的相關(guān)資料,I18n是Vue.js的國(guó)際化插件,項(xiàng)目里面的中英文等多語(yǔ)言切換會(huì)使用到這個(gè)東西,需要的朋友可以參考下2023-12-12vue中vee validate表單校驗(yàn)的幾種基本使用
這篇文章主要介紹了vee-validate表單校驗(yàn)的基本使用,需要的朋友可以參考下2018-06-06基于vite2+Vue3編寫(xiě)一個(gè)在線幫助文檔工具
提起幫助文檔,想必大家都會(huì)想到?VuePress等。但是VuePress是“靜態(tài)網(wǎng)站生成器”,需要我們自行編寫(xiě)文檔,然后交給VuePress變成網(wǎng)站。因此,本文將用vite2+Vue3編寫(xiě)一個(gè)在線幫助文檔工具,需要的可以參考一下2022-03-03詳解Vue2.X的路由管理記錄之 鉤子函數(shù)(切割流水線)
本篇文章主要介紹了Vue2.X的路由管理記錄之 鉤子函數(shù)(切割流水線),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05