vue子傳父,本來是以為是要通過觸發一個事件,才能傳值到父組件的。
結果原來可以不用的。別人說vuex,太麻煩了。
其實可以不用。父組件必須異步的把值傳給子組件就可以了,例如axios里的請求,或者設置setTimeout
先說下場景:
子組件created的時候就請求一些數據,請求來的數據,要傳給父組件。此時都還沒有觸發任何事件。那么要傳值給父組件,就要這么做了。(其實很簡單的)
子組件代碼:
xxx.then(res=>{
this.childData = data.res
this.$emit('cdata',this.childData) // 剛求完直接$emit
})
然后,父組件就要接收
import Child form 'xxx.vue' <child @childData="getValue($event)"></child> getValue(data){ this.pdata = data }
這樣請求完成了,父組件馬上就可以獲取到了子組件數據了,不用觸發事件