鍍金池/ 問答/HTML/ vue父組件異步請求獲取數(shù)據(jù)傳遞給子組件,子組件能獲取并渲染數(shù)據(jù)到頁面,但是會報

vue父組件異步請求獲取數(shù)據(jù)傳遞給子組件,子組件能獲取并渲染數(shù)據(jù)到頁面,但是會報錯怎么解決呢?

請教,父組件ajax異步請求獲取數(shù)據(jù)

然后傳遞給子組件

子組件在頁面中渲染使用了父組件傳過來的data對象中的img屬性

子組件能獲取到數(shù)據(jù)并渲染數(shù)據(jù)到頁面,但是會報錯,怎么解決呢。
代碼:
clipboard.png

clipboard.png
報錯如下:
clipboard.png

頁面會報錯說找不到avatar屬性,報錯如下,但是頁面上又能渲染出圖片,我猜想可能是頁面在渲染子組件的時候 ajax還沒有返回對象,但是子組件已經(jīng)渲染過去了所以報錯,接著ajax對象拿到數(shù)據(jù)在傳到子組件,子組件在更新所以拿到了圖片,請教大佬,是這樣嗎?或者說怎樣處理呢。

回答
編輯回答
苦妄
  1. 看打印順序,就是先判斷是否有 seller,沒有所以報錯了;后獲取的 seller,所以打印出 Object 并且有顯示;
  2. 你可以自己假設(shè)一個空值:
 seller: {
    seller: {
      avatar: ''
    }
 }
2018年9月9日 08:59
編輯回答
伐木累

是你說的那樣,你可以加個默認(rèn)值

seller:{
              type:Object,
              default:function(){
                  return {
                      seller: {
                      avatar: ''
                    }
                  }
              }
        }
2017年11月8日 00:18
編輯回答
朽鹿

謝謝各位!感謝,提問之前我還怕麻煩別人,沒想到大家這么有愛,愛你們。
已經(jīng)解決了,總結(jié)一下:
這個昨晚我在提問后,又試了試
1.對父組件加了一個 v-if,也就是判斷數(shù)據(jù)是否為空,為空就不渲染,也能解決了
2.如前面幾位大佬說的,加一個為空的默認(rèn)值,這樣就很好的解決了,如下

seller:{
              type:Object,
              default:function(){
                  return {
                      seller: {
                      avatar: ''
                    }
                  }
              }
        }
2018年4月12日 22:22
編輯回答
我以為

需要加default值
clipboard.png

2018年4月4日 17:09