今天小編給大家分享一下Vue2中無(wú)法檢測(cè)到數(shù)組變動(dòng)怎么解決的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
在吉州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需求定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),全網(wǎng)整合營(yíng)銷推廣,外貿(mào)營(yíng)銷網(wǎng)站建設(shè),吉州網(wǎng)站建設(shè)費(fèi)用合理。
解決方法
由于JavaScript 的限制,Vue 不能檢測(cè)以下數(shù)組的變動(dòng):
當(dāng)利用索引直接設(shè)置一個(gè)數(shù)組項(xiàng)時(shí),例如:vm.items[indexOfItem] = newValue
當(dāng)修改數(shù)組的長(zhǎng)度時(shí),例如:vm.items.length = newLength
var vm = new Vue({ data: { items: ['a', 'b', 'c'] } }) vm.items[1] = 'x' // 不是響應(yīng)性的 vm.items.length = 2 // 不是響應(yīng)性的
手動(dòng)添加監(jiān)聽(tīng) // Vue.set Vue.set(vm.items, indexOfItem, newValue) vm.$set(vm.items, indexOfItem, newValue) 使用數(shù)組的變異方法,因?yàn)関ue對(duì)數(shù)組的變異方法實(shí)現(xiàn)了響應(yīng)式 // Array.prototype.splice vm.items.splice(indexOfItem, 1, newValue)
官方文檔中對(duì)于這兩點(diǎn)都是簡(jiǎn)要的概括為“由于JavaScript的限制”無(wú)法實(shí)現(xiàn),而Object.defineProperty是實(shí)現(xiàn)檢測(cè)數(shù)據(jù)改變的方案,那這個(gè)限制是指Object.defineProperty嗎?
其實(shí)原因并不是因?yàn)镺bject.defineProperty()存在漏洞,而是出于性能問(wèn)題的考慮。 Object.defineProperty 在數(shù)組中的表現(xiàn)和在對(duì)象中的表現(xiàn)是一致的,數(shù)組的索引就可以看做是對(duì)象中的 key 。
通過(guò)索引訪問(wèn)或設(shè)置對(duì)應(yīng)元素的值時(shí),可以觸發(fā) getter 和 setter 方法
通過(guò) push 或 unshift 會(huì)增加索引,對(duì)于新增加的屬性,需要再手動(dòng)初始化才能被 observe 。
通過(guò) pop 或 shift 刪除元素,會(huì)刪除并更新索引,也會(huì)觸發(fā) setter 和 getter 方法。
所以, Object.defineProperty 是有監(jiān)控?cái)?shù)組下標(biāo)變化的能力的,只是vue2.x放棄了這個(gè)特性。
Object.property是可以檢測(cè)到通過(guò)索引改變數(shù)組的操作的,而Vue沒(méi)有實(shí)現(xiàn)。那我們看看源碼:
Vue3.0中則用proxy代替了Object.defineProperty()解決了其存在的問(wèn)題
以上就是“Vue2中無(wú)法檢測(cè)到數(shù)組變動(dòng)怎么解決”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文名稱:Vue2中無(wú)法檢測(cè)到數(shù)組變動(dòng)怎么解決
文章出自:http://www.chinadenli.net/article46/jigoeg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站收錄、外貿(mào)建站、、動(dòng)態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)