在有些時候,子組件直接修改父組件傳來的 prop 對象
的屬性會出現不同步的問題。
比如,父組件傳過來的一個對象 checkBoxObj
:
checkBoxObj:{
checked: false
}
將 checked
通過v-model綁定給子組件的 checkbox,然后點擊這個checkbox,試圖改變 checked
的值,但是有時候會發現 checkbox 的選中狀態和 checked 相反,也就是不同步的問題。
(嘗試)解決辦法
將prop的checkBoxObj
值賦值給data的一個值checkBoxData
,
this.checkBoxData = this.checkBoxObj;
由於是直接賦值,也存在引用關系,修改checkBoxData
的checked
就相當於修改了checkBoxObj
的checked
。於是這個bug不在出現。
然后直接修改這個checkBoxData的checked屬性值,不要直接修改prop傳過來的值。