2017-10-10 206 views
-1

我有反應組分與構造:對象屬性總是返回undefined

constructor(props) { 
    super(props); 
    console.log(props.user); 
    console.log(props.user.email); 
} 

OUTPUT:

{"id":7,"email":"[email protected]","locale":"en","hp":100,"created_at":"2017-10-10T20:42:04.677Z","updated_at":"2017-10-10T21:35:22.297Z"} 

undefined 
+0

試試'props.user [ '電子郵件']' – xDreamCoding

+0

@cfraser我規定的props.user輸出,並且它是一個對象。請閱讀這個問題。 – Src

+0

@xDreamCoding相同 – Src

回答

1

props.user是一個JSON字符串,而不是一個JavaScript對象。你需要首先解析它,然後到達子屬性。

constructor(props) { 
    super(props); 
    console.log(props.user); 
    const user = JSON.parse(props.user); 
    console.log(user.email); 
} 
+0

輸出:'SyntaxError:JSON.parse:JSON數據第1行第2列的意外字符' – Src

+0

@Src:您顯示的輸出是一個stri ng將被記錄到控制檯。 'typeof props.user'說什麼? –

+0

@FelixKling我的不好,js被緩存了。是的,它變成了一個JSON對象。這真的很奇怪,因爲'react-rails'應該能夠處理這個問題。如果我沒有顯式使用'to_json'作爲後端對象,我可以在不解析的情況下使用它。但它應該調用to_json,那麼問題是什麼......呃神祕莫測。謝謝 ! – Src