2017-04-08 2 views
0

Dies ist übergeordnetes Element:Reagieren his.setState ist keine Funktion

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

ich es das Kind bin vorbei:

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

Das Kind:

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

    } 

Antwort

1

Fabrikat sicher, dass Sie an this binden, bevor Sie es innerhalb der Funktion aufrufen. Sie können entweder Ihre changedData Funktion Unterschrift auf eine ES6 Pfeil Funktion bind es wie folgt auto ändern:

changedData =() => { 
} 

oder Sie können es in der untergeordneten Komponente wie folgt binden:

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

Oder Sie könnten binden Es ist im Konstruktor, was gegenüber dem zweiten Vorschlag vorzuziehen ist (da die Inline-Bindung eine neue gebundene Funktion bei jedem Rendern erzeugt). –

+0

Ich arbeite nicht wirklich viel mit reactjs, so dass ich am Ende nur Pfeilfunktionen für die Bindung verwenden, wenn ich muss. Hat die Verwendung zum Binden irgendwelche Nachteile im Vergleich zur Bindung im Konstruktor @RobM? –

+1

AFAIK Pfeil Methodendeklarationen sind nur syntaktische Zucker für die Bindung im Konstruktor und teilen nicht die Nachteile der Inline-Bindung –

Verwandte Themen