Vue中更改對象檢測注意事項(xiàng)

官文文檔

image.png

image.png

對象更改檢測注意事項(xiàng)

image.png
image.png

自己的測試:

<div class="test">
  Name: {{testObj.name }}
  hobby: {{ testObj.hobby }}
</div>
    created () {
      this.testObj.hobby = '籃球'
    }

有時候我們直接使用this.testObj.hobby = '籃球'也可以成功的原因,在于它是在視圖渲染之前(比如上面的例子的結(jié)果如下)就將這個添加了屬性并賦值,然而這實(shí)際上是一種假象,因?yàn)檫@樣是不能做是沒有辦法做到響應(yīng)式的。

image.png

但是如果將添加屬性和賦值的操作放在mounted中,會怎樣呢???

    mounted () {
      this.testObj.hobby = '籃球'
    }
image.png

可以看到是沒有效果出來的,再看下面的例子,同樣在created中

    created () {
      this.testObj.hobby = '籃球'
      setTimeout(() => {
        this.testObj.hobby = '排球'
      }, 0)
    }

結(jié)果還是籃球,也就是說最后修改了屬性的值是沒有反映在視圖上的

image.png

解決方法
但是我們采用其他方法呢?比如官方文檔說的vm.$set

    created () {
      this.$set(this.testObj, 'hobby', '自行車')
      setTimeout(() => {
        this.testObj.hobby = '排球'
      }, 0)
    }
image.png

這個時候的結(jié)果就是排球了,說明這個時候才是真正的響應(yīng)式

其他的方法:
使用Object.assign()

    created () {
      this.testObj = Object.assign({}, this.testObj, { 'hobby': '單車' })
      setTimeout(() => {
        this.testObj.hobby = '排球'
      }, 0)
    }
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • Core Animation基礎(chǔ) Core Animation 利用了硬件加速和架構(gòu)上的優(yōu)化來實(shí)現(xiàn)快速渲染和實(shí)時動...
    獨(dú)木舟的木閱讀 1,702評論 0 3
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • 翻譯自“Auto Layout Guide”。 1 入門 1.1 理解自動布局 自動布局根據(jù)視圖層級結(jié)構(gòu)中視圖上的...
    lakerszhy閱讀 3,959評論 3 26
  • 翻譯自“Collection View Programming Guide for iOS” 0 關(guān)于iOS集合視...
    lakerszhy閱讀 4,076評論 1 22
  • 一、趕路 昨天晚上八點(diǎn),趕火車去北京 在路上就打開手機(jī),聽YY分享 八點(diǎn)五十上車,一邊買票一邊聽 一邊檢票一邊聽!...
    英倫小兔子閱讀 613評論 8 0

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