内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

使用vue如何監(jiān)聽數(shù)組變化-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)使用vue如何監(jiān)聽數(shù)組變化,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、網(wǎng)站制作、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設(shè)計師團隊。

我們知道通過Object.defineProperty()劫持數(shù)組為其設(shè)置getter和setter后,調(diào)用的數(shù)組的push、splice、pop等方法改變數(shù)組元素時并不會觸發(fā)數(shù)組的setter,這就會造成使用上述方法改變數(shù)組后,頁面上并不能及時體現(xiàn)這些變化,也就是數(shù)組數(shù)據(jù)變化不是響應(yīng)式的(對上述不了解的可以參考這篇文章)。但實際用vue開發(fā)時,對于響應(yīng)式數(shù)組,使用push、splice、pop等方法改變數(shù)組時,頁面會及時體現(xiàn)這種變化,那么vue中是如何實現(xiàn)的呢?

通過vue源碼可以看出,vue重寫了數(shù)組的push、splice、pop等方法。

// src/core/observer/array.js

// 獲取數(shù)組的原型Array.prototype,上面有我們常用的數(shù)組方法
const arrayProto = Array.prototype
// 創(chuàng)建一個空對象arrayMethods,并將arrayMethods的原型指向Array.prototype
export const arrayMethods = Object.create(arrayProto)

// 列出需要重寫的數(shù)組方法名
const methodsToPatch = [
 'push',
 'pop',
 'shift',
 'unshift',
 'splice',
 'sort',
 'reverse'
]
// 遍歷上述數(shù)組方法名,依次將上述重寫后的數(shù)組方法添加到arrayMethods對象上
methodsToPatch.forEach(function (method) {
 // 保存一份當前的方法名對應(yīng)的數(shù)組原始方法
 const original = arrayProto[method]
 // 將重寫后的方法定義到arrayMethods對象上,function mutator() {}就是重寫后的方法
 def(arrayMethods, method, function mutator (...args) {
  // 調(diào)用數(shù)組原始方法,并傳入?yún)?shù)args,并將執(zhí)行結(jié)果賦給result
  const result = original.apply(this, args)
  // 當數(shù)組調(diào)用重寫后的方法時,this指向該數(shù)組,當該數(shù)組為響應(yīng)式時,就可以獲取到其__ob__屬性
  const ob = this.__ob__
  let inserted
  switch (method) {
   case 'push':
   case 'unshift':
    inserted = args
    break
   case 'splice':
    inserted = args.slice(2)
    break
  }
  if (inserted) ob.observeArray(inserted)
  // 將當前數(shù)組的變更通知給其訂閱者
  ob.dep.notify()
  // 最后返回執(zhí)行結(jié)果result
  return result
 })
})

網(wǎng)站題目:使用vue如何監(jiān)聽數(shù)組變化-創(chuàng)新互聯(lián)
瀏覽地址:http://m.rwnh.cn/article38/iidpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站設(shè)計關(guān)鍵詞優(yōu)化、微信小程序外貿(mào)網(wǎng)站建設(shè)、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司
怀安县| 高淳县| 建宁县| 普陀区| 夏津县| 太仆寺旗| 云和县| 乳源| 郧西县| 兖州市| 红安县| 灵丘县| 望奎县| 剑川县| 洛南县| 普安县| 古交市| 保康县| 新宾| 阿勒泰市| 乌鲁木齐市| 威远县| 兴文县| 深泽县| 大新县| 雷山县| 礼泉县| 象州县| 区。| 墨江| 乌恰县| 新平| 纳雍县| 阿坝| 荥阳市| 罗江县| 甘肃省| 宁乡县| 昌宁县| 卓尼县| 泽普县|