props的異步加載問題


在寫vue項目的時候,父組件調用ajax的接口獲得數據,然后賦值給data中的初始值,然后通過props傳給子組件,子組件在created的時候,獲得的props的值有的時候是undefined,因為ajax是異步請求,執行的http線程,js線程執行的過程可能還沒有值的返回.

保證在子組件created的時候也有值,解決方案是在父組件中調用子組件的時候寫一個v-if,在ajax值返回的時候再v-if=‘true’解決

//父組件中
<v-child :data='data' v-if='flag'></v-child>

methods:{
   init(){
       this.axios.get().then((res)=>{
          this.data=res.data;
          this.flag=true  
      })  
    }  
}    

//子組件

props { 
    data: {
      type: Object,
      default: function () {
        return { message: 'hello' }
      }
    }  
}    

created(){
  this.init()      
}

  


免責聲明!

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



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