起因:今天在子組件中寫了一個方法,想要在頁面初始化的時候渲染頁面,所以便有了下面的坎坷路程:
今天遇到這個問題后,
想在頁面初始化的時候直接加載子組件,
本來之前用的好好的,
但是今天死活在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中渲染的解決方式
最終解決方式:將子組件的方法調到父組件中,將方法放到父組件中的聲明周期內,多定義變量,通過父子傳值方式進行函數參數操作
總結:菜的想哭!!!等待大佬的解決方式!