[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop’s value.
最近在用vue+element做一個小項目岗照,在父子組件傳值時遇到了一些問題如下:
根據(jù)報錯提示才顿,是因為關閉子組件時侦香,子組件直接去改變父組件傳過來的showUpdateDialog變量的值造成的窝撵,但實際上我并沒有直接改變showUpdateDialog的值,以下是原有代碼:
子組件的html代碼:
子組件接收父組件傳的參數(shù)showUpdateDialog:
子組件自定義觸發(fā)事件:
父組件監(jiān)聽事件:
代碼來來回回看了好多遍都沒看出來問題在哪兒借卧,我猜測歇僧,可能是因為子組件用的是element的對話框el-dialog,關閉el-dialog時會自動改變父組件的值,并不是我的代碼問題街夭,而是框架的原因砰碴。雖然猜測不一定正確,但是問題還是得解決板丽。怎么解決呢呈枉?作為小白做不到手撕vue源碼趁尼,重新封裝前端框架,得從別的地方入手猖辫。
我的思路是酥泞,既然不能直接改變父組件的值,那我們把父組件的值賦給子組件的某個變量啃憎,然后我們去改變這個變量的值不就可以解決問題了嗎芝囤?
首先定義一個變量visible,然后改寫代碼:
用偵聽器去監(jiān)聽父組件傳過來的值辛萍,來相應數(shù)據(jù)的變化悯姊。
其余代碼保持不變,保存運行項目贩毕,反復打開對話框子組件沒報錯悯许。問題解決(o)/~
原文鏈接:https://blog.csdn.net/qq_43779703/article/details/100733761