1. 程式人生 > >vue通過props傳遞物件會報錯

vue通過props傳遞物件會報錯

子元件sonCp.vue

資料結構

報錯但是資料能渲染上去

求解,順便幫我看一下我取資料方式對麼,是放到created這個裡面麼

子元件最初得到的是空字串,木有.acount.name之類的屬性,所以出錯。

最簡單的解決辦法:

父元件App.vue中的

1
<sonCp :dataObj="dataObj" />

改成:

1
<sonCp :dataObj="dataObj" v-if="dataObj" />

非同步請求的資料是會渲染兩次的!第一次是請求沒完成時,這時候obj是你返回的”。然後子元件去取值,肯定發生錯誤呀!第二次才是請求返回,然後才有資料。所以解決方式就很明顯了,有很多種解決方式。

初始時dataObj是空字元,所以傳到子元件肯定會報錯,可以通過v-if判定下是否已取到資料,取到之後再進行渲染。

一、如樓上所述,在dom中通過v-if判斷dataObj.length,保證在有資料情況下的渲染(推薦!!)

二、提前在父元件data選項中設定好dataObj物件的資料結構,比如:

1
2
3
4
5
6
7
8
9
10
11
12
data() {
    return {
        dataObj: {
            id: '',
            account: {
                name: '',
                age: ''
            }
        }
      
    };
}

另外建議樓主儘量在data選項中預留初始項時選擇合適的資料型別賦預設值,比如父元件中dataObj要存放的是陣列型別,儘量

1
dataObj: []

,這樣也語義表達上也明確。