2017-04-05 81 views
0

我已經派人對象屬性爲什麼我越來越不確定的的console.log在reactJs

objValue = { 
    key1 = 'value1', 
    key2 = ['a','b','c','d','e'], 
} 
<childComponent objValue = {objValue} /> 

然後在我的孩子我試圖訪問屬性

class ....{ 
    const {obj} = this.props.objValue, 
    console.log({obj.key2}) 
} 

我錯過了什麼?

回答

1

的問題是在這條線:

const {obj} = this.props.obj; 

寫這樣的:

const {objValue} = this.props; 

原因是要傳遞的objectprops與關鍵objValue,所以你需要爲使用this.props.objValue.key或像這樣解構:

const {objValue} = this.props; 

現在您可以使用objValue.key2它將打印適當的值。

props將是這樣的:

{ 
    objValue: { 
     key1 : 'value1', 
     key2 : ['a','b','c','d','e'], 
    } 
    ..... 
} 

檢查DOC的更多信息,Object destructuring

一些變化:

的反應成分必須以大寫字母開頭的名稱,否則將被視爲HTML元素還沒有反應過來成分,所以使用ChildComponent,而不是childComponent

您使用=object指定值,代替使用:

檢查這個例子:

var a = {a:1, b:2, c:3}; 
 

 
var {b} = a; 
 

 
console.log(b); 
 

 
console.log({b});

+0

是啊我正在使用完全按照上面寫的,但它不工作 – palyxk

+0

nope我越來越undefined,在parentComponent我清楚地看到整個對象,但當試圖訪問它的屬性與數組它不工作,但簡單的屬性,我可以訪問。我不明白我在做什麼錯誤 – palyxk

+0

你在哪個地方使用'console.log'? –

0

看看你的大成,您使用=的對象,而不是:和Mayank權,組件的名稱應當以大寫字母開頭。

0

謝謝大家,我實際上發現它在工作中的基礎對象定義中的拼寫錯誤。