日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue项目统一响应_vue中使用$set实现深入响应式原理

發布時間:2023/12/15 vue 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue项目统一响应_vue中使用$set实现深入响应式原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:其實使用vue的都知道,vue聲明在data中的屬性都是響應式的,也就是,我們在修改data中的屬性時,一般頁面都能實時更新。但是由于 JavaScript 的限制,Vue 不能檢測數組和對象的變化。比如我們對data中的對象屬性和數組屬性進行一些修改時,無法響應式更新渲染到頁面,因此vue提供了$set這個API來解決這個限制。

一 改變數組使用$set:

其實根據vue的官網,明確說明了下面兩種改變數組的操作時無法做到響應式更新頁面的

也許此時你還會不信,就偏偏用上邊這兩種試一下,看看是否真的無法更新頁面信息,當然我也測過:

因為,之前第一次使用vue開發項目時碰到過一個奇葩的問題,我就是直接使用上邊 '1' 的這種方法改變數組,奇怪的是本地瀏覽器竟然也更新了,剛開始以為是緩存什么的問題,但是重啟項目,清空瀏覽器緩存,還是一樣能更新。最后打了個包放到測試環境看了下,確實無法渲染使用這種方式改變數組,仔細看了下官網,還是按照它這規范操作數組,問題解決。

1. 改變數組的錯誤樣式:

a.下邊使用上面不提倡的 '1'這種方法改變數組:

結果:單單看打印出來的數組信息,list對應下標的元素是改變了,但是頁面確實沒有響應式更新。

b. 看下第 '2' 中不提倡的方式:

一樣,打印出來的數組長度是變化了,但是頁面顯示的長度還是最初數組的長度

2. 使用vue約定的方式操作數組:

二 使用$set操作對象:

1. 使用vue約定的方式操作對象:

a. 往對象中新增一個屬性

b. 往對象新增多個屬性:

2. 不正確的方式操作對象:

看下無法更新對象的寫法(以添加一個屬性為例):

到這里,因為javaScript的限制,Vue 不能檢測數組和對象的變化的問題,通過提供的$setAPI得以解決了。

3. 非對象或數組的單個屬性:

$set是vue專門針對對象和數組的問題的,關于單純的屬性,vue官方是建議在開始時根據需要直接聲明在data中,不然直接把一個data中沒聲明的屬性,在某個dom中渲染使用或者直接在某個想選中對它進行操作,控制臺肯定會報:

Property or method "xxx" is not defined on the instance but referenced during render.

總結

以上是生活随笔為你收集整理的vue项目统一响应_vue中使用$set实现深入响应式原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。