2017-04-08 75 views
0

這是父元素:陣營his.setState不是一個函數

changedData(){ 
    this.setState({ 
     changed: true 
    }).bind(this) 
    } 

我把它傳遞給孩子:

<AboutMe changedData={this.changedData} auth={this.props.auth} profile={profile}/> 

孩子:

dataChanged(data) { 
      this.props.changedData();  
     console.log("dataChanged!!") 

    } 

回答

1

製作在調用函數之前,確定你綁定了this。 你可以改變你的changedData函數簽名的ES6箭頭功能這樣自動將其綁定:

changedData =() => { 
} 

,或者你可以在子組件像這樣綁定它:

<AboutMe 
    changedData={this.changedData.bind(this)} 
    auth={this.props.auth} 
    profile={profile}/> 
+1

或者你可以綁定它在構造函數中,這比第二個建議更可取(因爲內聯綁定將在每個渲染上創建一個新的綁定函數)。 –

+0

我對reactjs並沒有太多的工作,所以我最終只需要使用箭頭函數進行綁定。與構造函數@RobM中的綁定相比,使用它來綁定有什麼不利之處? –

+1

AFAIK箭頭方法聲明只是在構造函數中綁定的語法糖,不共享內聯綁定的缺點 –

相關問題