Vue如何解決子組件data從props中無法動態(tài)更新數(shù)據(jù)問題
問題
最近在公司寫vue項目的時候,發(fā)現(xiàn)一個渲染問題,父組件傳給子組件的數(shù)據(jù),當該數(shù)據(jù)在父組件的中發(fā)生改變的時候,子組件中的數(shù)據(jù)不會因其的改變而去改變。
原因
經(jīng)上網(wǎng)查證得知,是因為父組件傳給子組件的數(shù)據(jù)是通過子組件的mounted階段進行的處理,才能通過data渲染到頁面上,從而更新。
但是數(shù)據(jù)發(fā)生變化的時候,mounted階段已經(jīng)過了,所以data捕獲不到數(shù)據(jù)的更新,從而無法更新
示例
//父組件 <add-model :addshow='addshow' ></add-model> //子組件 <template> ?? ?<div> ?? ??? ?<Modal ?v-model="addModelshow"> ?? ??? ?</Modal> ?? ?</div> </template> export default { ?? ?props:{ ? ? ? ? addshow:{ ? ? ? ? ? ? type:Boolean, ? ? ? ? ? ? required:true ? ? ? ? } ? ? }, ? ? data(){ ? ? ?? ?return { ? ? ?? ??? ?addModelshow:this.addshow, ? ? ?? ?} ? ? } }
在上述代碼中,如果控制addshow的true或者false,是無法控制子組件中的模態(tài)框的關閉銷毀。
我的解決辦法
是用watch監(jiān)聽子組件接收的數(shù)據(jù)的變化,從而實現(xiàn)更新操作
?watch:{ ? ? ? ? addshow(){ ? ? ? ? ? ? this.addModelshow=this.addshow; ? ? ? ? } ? ? }
網(wǎng)上還有另一種方法,使用的computed屬性,也可以。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue3+cesium環(huán)境搭建的實現(xiàn)示例
本文主要介紹了Vue3+cesium環(huán)境搭建的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-08-08vue2實現(xiàn)directive自定義指令的封裝與全局注冊流程
自定義指令是對普通DOM元素進行的底層操作,它是一種有效的的補充和擴展,不僅可以用于定義任何的dom操作,并且是可以復用的,下面這篇文章主要給大家介紹了關于vue2實現(xiàn)directive自定義指令的封裝與全局注冊流程的相關資料,需要的朋友可以參考下2023-02-02Vue實現(xiàn)移除數(shù)組中特定元素的方法小結
這篇文章主要介紹了Vue如何優(yōu)雅地移除數(shù)組中的特定元素,文中介紹了單個去除和批量去除的操作方法,并通過代碼示例講解的非常詳細,具有一定的參考價值,需要的朋友可以參考下2024-03-03vue3中使用ant-design-vue的layout組件實現(xiàn)動態(tài)導航欄和面包屑功能
這篇文章主要介紹了vue3中使用ant-design-vue的layout組件實現(xiàn)動態(tài)導航欄和面包屑功能,基于一個新建的Vue3項目上實現(xiàn),本文結合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-01-01