小謝第12問:初始化頁面的時候子組件為什么不渲染?


起因:今天在子組件中寫了一個方法,想要在頁面初始化的時候渲染頁面,所以便有了下面的坎坷路程:

今天遇到這個問題后,

想在頁面初始化的時候直接加載子組件,

本來之前用的好好的,

但是今天死活在vue的聲明周期中找不到子組件,

問百度無非就是ref綁定,v-show實例dom之類,

但是這次不加載的原因是根本拿不到子組件,

更別提上面的幾種方法了,

快要崩潰的時候,

對比了和平時寫的子組件與有什么不同,

終於發現了,子組件是寫在el-dialog彈出框中!!!

而這正是與其他子組件的不同之處,

於是我又扒開了element文檔,

定位到dialog這個屬性::visible.sync

文檔中的描述是:Dialog 的內容是懶渲染的,即在第一次被打開之前,傳入的默認 slot 不會被渲染到 DOM 上。因此,如果需要執行 DOM 操作,或通過 ref 獲取相應組件,請在 open 事件回調中進行。如果 visible 屬性綁定的變量位於 Vuex 的 store 內,那么 .sync 不會正常工作。此時需要去除 .sync 修飾符,同時監聽 Dialog 的 open 和 close 事件,在事件回調中執行 Vuex 中對應的 mutation 更新 visible 屬性綁定的變量的值。

腦子看完后說它明白了,

一頓操作后,

當然是不行的

結果-----------------------------------------------------------目前仍然不能初始化拿到子組件,非得點開dialog之后子組件才會渲染

結論-----------------------------------------------------------只能定位到彈框的問題,但是沒有在dialog中渲染的解決方式

最終解決方式:將子組件的方法調到父組件中,將方法放到父組件中的聲明周期內,多定義變量,通過父子傳值方式進行函數參數操作

總結:菜的想哭!!!等待大佬的解決方式!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM