2017-03-27 9 views
0

Ich bin neu in ReactNative, erhalte ich die Fehler undefined is not a object in meinem this.state.rows Ich versuche, ein View dynamisch hinzuzufügen, wenn ein Benutzer ein Button klickt. Ich versuchte, this zu verwenden und statt getInitialState zu verwenden, benutzte ich constructor(props), aber ich habe weiter den besagten Fehler. Hier ist mein Codeundefiniert ist kein Objekt in this.state - ReactNative

constructor(props) { 
super(props); 
this.state = { 
    rows: [], 
}; 
} 

addRow(){ 
this.state.rows.push(index++) 
this.setState({ rows: this.state.rows }) 
} 

render(){ 

let contactView =() => { 
    return <View> 
       <AddComponent /> 
      </View> 
} 

return(
<View> 
     <View> 
     {contactView} 
     </View> 

     <TouchableHighlight onPress={ this.addRow } > 
     <Text>Add</Text> 
     </TouchableHighlight> 
    </View> 
); 

Vielen Dank für Ihre Hilfe!

Antwort

6

Sie müssen this auf die Funktion addRow wie folgt binden:

<TouchableHighlight onPress={ this.addRow.bind(this) } > 
    <Text>Add</Text> 
</TouchableHighlight> 

oder eine anonyme Funktion erstellen automatisch diese binden:

<TouchableHighlight onPress={() => this.addRow() } > 
    <Text>Add</Text> 
</TouchableHighlight> 

Zur Erläuterung zu this beziehen.

+0

mein Fehler ist gelöst. Ich denke, ich muss nur anpassen, wie die "Ansicht" hinzugefügt und angezeigt wird, weil es nicht angezeigt wird, wenn ich auf die Schaltfläche klickte. Vielen Dank. – natsumiyu

+0

Die Pfeilfunktion funktionierte für mich. Zuvor hatte ich '', aber ich musste ' this.myFunction()}>'. – arnoldbird

0

Sie können dies auch tun.

export default class CustomCard extends React.Component{ 
    constructor(props) { 
     super(props); 

     // This binding is necessary to make `this` work in the callback 
     this.functionName= this.handleUpvote.bind(this); 
    } 
} 

Zum Aufruf der Funktion können Sie es so nennen.

<TouchableHighlight onPress={this.functionName} > 
    <Text>Add</Text> 
</TouchableHighlight> 
Verwandte Themen