2017-04-06 79 views
2

我有一個組件「Form」。我也有一些從我的mongoDB數據庫中獲得的數據,並且其狀態爲(myData) I dispatch。爲什麼我無法從這個對象渲染數據?我怎麼能夠?

所以在表單組件,我有一個mapstatetoprops功能myData的轉換爲道具。 myData是一個對象。

我想從myData的對象使用數據並顯示一些在該部件的返回功能該對象的屬性。

當我在渲染方法輸入:

const {myData} = this.props; 

console.log(myData); 

我可以看到我的對象及其在控制檯的內容,我想要的方式。

{} myData的看起來像這樣:

{ title: "mytitle", comments: [{comment: "qqq", vote: 1}, {comment: "www", vote: 2}]} 

但是,由於某種原因,我不明白,我不能在組件的迴歸方法使用{myData}。當我這樣做時,我收到以下錯誤消息:

對象作爲React子項無效。如果你的意思是渲染 收集兒童的,使用數組來代替或使用包裹從 ​​對象的陣營附加

我明白你不能在返回使用對象。但它是我擁有的一個對象,而不是一個Array。

我希望我能在我的return : {myData.title}寫這篇文章,看看標題時,我的組件呈現。

下返回錯誤信息:myData is undefined

render(){ 

    const {myData} = this.props; 

    console.log(myData); 

    return(

    <div>{myData.title}</div> 

) 

回答

1

既然你是在console獲得應有的價值,它看起來像當它第一次被渲染,也沒有找到myDataprops值,你要記住,你在console看到輸出保持在你擴大屬性,此刻不console.log被稱爲瞬間計算。實際上,Object旁邊的小i圖標告訴你。

所以只是把上一查,它應該工作,像這樣:

render(){ 
    const {myData} = this.props; 
    console.log(myData); 
    return(
     <div> Hello {myData && myData.title} </div> 
    ) 
} 

運行這browser console,擴大object,它會顯示更新的值不是初始值:

obj = {a: 1, b: 2, c: 3, d: 5, arr: []}; 
console.log(obj); 
obj.a = 5; 
+0

好了,這工作:) 時,你說,它沒有找到myData的內道具值你說的沒錯。控制檯日誌返回'未定義',然後'[HMR]連接',然後只有對象。 你能否詳細說明:_is此刻計算展開的性質,不是現在的console.log被called_ 我不明白這一點。或者你有鏈接? –

+0

這意味着假設你有一個具有一些值的對象a,並且你做了'console.log(a)',之後你在'console'中做了一些改變,你會看到更新的'a'值不是原始值,即使您在執行「a」中的更改之前使用了'console.log'。在展開「對象」時,始終會在運行時計算均值,它將打印出「a」的更新值。 –

+0

爲了避免這種情況,並以更清晰的方式編寫代碼,是否意味着我應該在父組件中連接我的「myData」狀態,而不是使用myData的組件? –

相關問題