2017-08-11 71 views
2

我的代碼塊如下:爲什麼我不能在這種方法中調用道具? (反應)

class Buerger extends React.Component { 
    constructor() { 
    super(); 
    this.gehaltHandler = this.gehaltChange.bind(this) 
    } 
    render() { 

    return(
     <div style={{textAlign:"right", marginTop:'-103', marginRight:'900px'}}> 
     <Anzeige stand = {"Bargeld: " + this.props.stand}/> 
     <Arbeit gehalt = {this.props.gehalt} gehaltChange = {this.gehaltChange} arbeitenFunc = {this.props.arbeitenFunc}/> 
     </div> 
    ) 
    } 

    gehaltChange(inputWert) { 
    const test = this.props.gehalt 
    alert(test) 
    } 

所以我通過道具「gehalt」從父類,你可以看到我再次把它傳遞給所謂的「Arbeit子類的子類「。

Funktion gehaltChange正在使用警報('click')進行檢查,但通過此代碼,我得到了「無法讀取屬性」的未定義屬性。

gehalt到「Arbeit」的傳遞也在工作,因爲我測試它作爲一個按鈕名稱,它顯示正確的值沒有問題。

我不明白。有人看到我做錯了什麼?難道我不能通過以前通過的道具並同時使用它們嗎?我會感謝任何幫助。

回答

0

因爲你改了個名字

this.gehaltHandler = this.gehaltChange.bind(this) 

VS

gehaltChange={this.gehaltChange} 

,所以你將其綁定到一個新的名稱,然後通過原來的綁定功能。

gehaltChange={this.gehaltHandler}this.gehaltChange = this.gehaltChange.bind(this)

+0

對不起,謝謝funktion正在工作,但我實際上沒有通過綁定的功能作爲一個名稱更改解決它的道具。 => gehaltChange = {this.gehaltHandler} 儘快接受答案。 – OhLongJohnson

2

因爲您需要通過構造函數props並且還請撥打super

class Buerger extends React.Component { 
    constructor(props) { 
    super(props); 
    this.gehaltHandler = this.gehaltChange.bind(this) 
    } 
+0

不認爲在有任何影響的props參數這個問題。 –

0

我想你是不是以正確的方式結合。 替換此行:

this.gehaltHandler = this.gehaltChange.bind(this); 

對於這一個:

this.gehaltChange = this.gehaltChange.bind(this); 

又通道具如上面有人回答。

0

只要改變這一點:

constructor() { 
    super(); 
    this.gehaltHandler = this.gehaltChange.bind(this) 
    } 

這樣:

constructor(props) { 
    super(props); 
    this.gehaltHandler = this.gehaltChange.bind(this); 
    } 

你錯過了在這兩個constructorsuper方法:)

相關問題