2017-04-08 4 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にバインドしてください。あなたはそれバインドautoに、このようなES6矢印関数にごchangedData関数のシグネチャを変更することができ 次のいずれか

changedData =() => { 
} 

か、このような子コンポーネントにバインドすることができます

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

それとも、結合することができるが2番目の提案よりも好ましい(インラインバインディングは各レンダリングで新しいバインドされた関数を作成するため)。 –

+0

私はreactjsで実際にはあまり働かないので、必要なときに矢の機能を使ってバインドするだけです。バインディングのためにそれを使用することは、コンストラクタ@RobMのバインディングと比較して何らかの弱点がありますか? –

+1

AFAIK arrowメソッドの宣言は、コンストラクタ内のバインディングの構文糖であり、インラインバインディングの短所を共有しません –