2017-10-10 161 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