Vue中更改物件檢測注意事項
官文文件
物件更改檢測注意事項
自己的測試:
<div class="test">
Name: {{testObj.name }}
hobby: {{ testObj.hobby }}
</div>
created () {
this.testObj.hobby = '籃球'
}
有時候我們直接使用this.testObj.hobby = '籃球'
也可以成功的原因,在於它是在檢視渲染之前(比如上面的例子的結果如下)就將這個新增了屬性並賦值,然而這實際上是一種假象,因為這樣是不能做是沒有辦法做到響應式的。
但是如果將新增屬性和賦值的操作放在mounted中,會怎樣呢???
mounted () {
this.testObj.hobby = '籃球'
}
可以看到是沒有效果出來的,再看下面的例子,同樣在created中
created () {
this.testObj.hobby = '籃球'
setTimeout(() => {
this.testObj.hobby = '排球'
}, 0)
}
結果還是籃球,也就是說最後修改了屬性的值是沒有反映在檢視上的
解決方法
但是我們採用其他方法呢?比如官方文件說的vm.$set
created () {
this.$set(this.testObj, 'hobby', '自行車')
setTimeout(() => {
this.testObj.hobby = '排球'
}, 0)
}
這個時候的結果就是排球了,說明這個時候才是真正的響應式
其他的方法:
使用Object.assign()
created () {
this.testObj = Object.assign({}, this.testObj, { 'hobby': '單車' })
setTimeout(() => {
this.testObj.hobby = '排球'
}, 0)
}
相關文章
- vue中 靜態檔案引用注意事項Vue
- SQLServer 物件建立注意事項之dboSQLServer物件
- 使用Vue.js的注意事項Vue.js
- 測試階段注意事項
- PHP物件和介面抽象類注意事項PHP物件抽象
- 使用ProForm的useRef()物件的注意事項ORM物件
- [譯] Vue.js — 注意事項和技巧Vue.js
- Vue 不能檢測到物件屬性的新增或刪除,注意!!!Vue物件
- C中memcpy使用注意事項memcpy
- 快取使用中的注意事項快取
- RandomAccessFile注意事項randomMac
- nginx 注意事項Nginx
- @Lombok注意事項Lombok
- 【翻譯】Vue.js 的注意事項與技巧Vue.js
- 2. Go中defer使用注意事項Go
- JavaScript 中 this 的工作原理以及注意事項JavaScript
- JavaScript中this的工作原理以及注意事項JavaScript
- ThinkPHP中CURD where的使用注意事項PHP
- delphi中的bpl開發注意事項
- 網站設計中的注意事項網站
- Linux中fork的使用注意事項Linux
- Go 中修改切片副本的注意事項Go
- for in 迴圈遍歷物件時需要注意的事項物件
- vue元件通訊–注意事項及經驗總結Vue元件
- vue元件通訊--注意事項及經驗總結Vue元件
- 快取注意事項快取
- 使用parallel注意事項Parallel
- 字串分割注意事項字串
- Xlistview的注意事項View
- 函式注意事項函式
- DUPLICATE DATABASE 注意事項Database
- bootstrap引用注意事項boot
- ovm搭建注意事項
- CSP 考前注意事項
- 生產注意事項
- 電量注意事項
- jmeter做分散式壓測時的注意事項JMeter分散式
- 開發及上線中的注意事項