vue響應(yīng)式檢測(cè)變化

假設(shè)我們直接去給formData里某個(gè)對(duì)象或數(shù)組(feKeyValue)添加屬性,頁面是識(shí)別不到的并不能渲染頁面,這就需要響應(yīng)式


image.png

檢測(cè)變化的注意事項(xiàng)

受現(xiàn)代 JavaScript 的限制 (而且 Object.observe 也已經(jīng)被廢棄),Vue 無法檢測(cè)到對(duì)象屬性的添加或刪除。由于 Vue 會(huì)在初始化實(shí)例時(shí)對(duì)屬性執(zhí)行 getter/setter 轉(zhuǎn)化,所以屬性必須在 data 對(duì)象上存在才能讓 Vue 將它轉(zhuǎn)換為響應(yīng)式的。例如:
var vm = new Vue({
  data() {
    return {
      formData: {
      }
    }
  })
// `vm.formData` 是響應(yīng)式的

vm.b = 2
// `vm.b` 是非響應(yīng)式的
對(duì)于已經(jīng)創(chuàng)建的實(shí)例,Vue 不允許動(dòng)態(tài)添加根級(jí)別的響應(yīng)式屬性。但是,可以使用 Vue.set(object, propertyName, value) 方法向嵌套對(duì)象添加響應(yīng)式屬性。例如,對(duì)于:
this.$set(this.formData, 'fekeyvalue', [{key: '', value: '', comment: ''}]);
console.log(this.formData);

在console打印出formData

image.png

可以明顯看到$set后有了getter/setter
同理 點(diǎn)擊? 添加數(shù)組長(zhǎng)度也可直接相應(yīng)并頁面渲染

     */
    handleAddAttr(attr, array) {
      array.push({key: '', value: '' ,comment: ''})
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容