2016-06-01 58 views
0

我得到一個錯誤that.setState不是一個函數,一個獨立的函數內部

that.setState是不是一個函數

我看到了問題 React this.setState is not a function

仍我無法讓它工作。

但我的是一個獨立的功能。此外,我保存的背景和使用它像:

componentDidMount(){ 
    that=this; 
} 

然後

updateResult(item){ 
    result.push(item); 
    that.setState({result: result}); 
} 

我也結合它在構造函數中

this.updateResult = this.updateResult.bind(this);  
this.resetResult = this.resetResult.bind(this); 

我也試過在一個功能

onUpdate(item,()=>{ 
    itemList.push(item); 
    that.setState({itemList: itemList}); 
}.bind(this)); 

但給出UnexpectedToken Error!

我將它傳遞這樣

<Buttons onUpdate={this.onUpdate} /> 

,然後從那裏調用函數,但我使用「那個」了的setState。

這是我的第一個應用程序,很抱歉,如果有非常明顯的錯誤!

+0

你爲什麼要存儲背景?你不能只用'this'而不是'that'?使用'that'模式大部分被es6所棄用。 –

+2

而且你不需要綁定那樣的箭頭功能! 您能否爲我們發佈完整的組件? – Syberic

+0

@Syberic,我的第一個應用程序,嘗試不同的東西,以某種方式得到它的工作:p基於在我指出的stackoverflow中的問題,我知道這是錯誤的,它提供了一個錯誤,正如我所提到的。我仍然需要學習正確的方法。 –

回答

0

當你寫這樣

<Buttons onUpdate={this.onUpdate} /> 

的功能的onUpdate勢必與窗口,這就是爲什麼沒有定義的setState。

你可以做這樣的

<Buttons onUpdate={this.onUpdate.bind(this)} /> 

或聲明的onUpdate像

updateResult = item => {...} 

這個箭頭功能將與此(類)的約束