數組:
數組可監聽到的方法:'push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'
如果是根據索引改變值,需要使用vue.$set來改變。
對象:
監聽一個對象的話,首先要知道對象的刪除或者新增是監聽不到的。需要使用vue.$set或者vue.$delete
其次如果監聽一個深層對象,需要使用deep:true方法,但是watch監聽到這個對象的newval與oldval是相同的。(原因:偵聽一個響應式對象或數組將始終返回該對象的當前值和上一個狀態值的引用。為了完全偵聽深度嵌套的對象和數組,可能需要對值進行深拷貝。這可以通過諸如 lodash.cloneDeep 這樣的實用工具來實現。)
例如:計算屬性深拷貝要堅挺的值,監聽這個計算屬性。這時候你也不用寫deep位true了。解決了新舊值相同的問題,十分方便
如果你監聽的事對象中的某一個值,你在watch中可以這么些 “obj.xx” 這時候監聽的只有那一個值