2017-08-03 3 views
0

Ich habe ein Component wie folgt aussehen:Attach Funktion zu onClick()/onPress()

export default class List extends Component { 
    constructor(props) { 
    super(props); 
    } 

_onPress = (key) => { 
    alert(key); 
    } 

_createList =() => { 
    const list = Object.keys(this.state.obj).map((key, index) => { 
     return (
     <TouchableHighlight 
      key = {index} 
      style = {style.container} 
      onPress = {this._onPress(key)} 
      > 
      <Text>{key}</Text> 
     </TouchableHighlight> 
     ) 
    }); 
     return list; 
    } 

    render() { 
    const listview = this._createList(); 
    return (
     <View> 
     {listview} 
     </View> 
    ) 
    } 
} 

Ob Startup ich drei alerts (eine für jeden Schlüssel/Wert-Paar in meinem Object). Dieses Verhalten wird erwartet. Wenn ich jedoch auf einen der Texts/Touchables klicke, bekomme ich keinen alert. Warum das?

Antwort

0

dies versuchen.

onPress = {() => this._onPress(key) } 

mit onPress = {this._onPress(key)}, onPress dem Ergebnis der _onPress Funktionsaufruf binden, dass gleich undefiniert.

1

müssen Sie den Callback übergeben, nicht das Callback-Ergebnis.

onPress = {event => this._onPress(key)}

Verwandte Themen