2017-09-04 4 views
0

ListViewの項目の行にタップを処理しようとしていますが、試してみると少し違う方法で失敗します。`TouchableOpacity`のデータで` onPress`コールバックを得る方法

私はrenderRowの機能を持っています。これはListView.renderRowに提供されています。ここでは私がやりたい:

renderRow(rowData) { 
    return (
    <TouchableOpacity onPress= {() => this.tapRow(rowData) }> 
     <View style={{margin: 5, backgroundColor: "#EEE" }}> 
      <Text>{rowData.text}</Text> 
     </View> 
    </TouchableOpacity> 
) 
} 

そして、私のtapRow関数である:これはエラー_this3.tapRow is not a function ... _this3.tapRow is undefinedになり

tapRow(rowData) { 
    console.log("Tapped Row: " + rowData.id) 
} 

私はまた、this.tapRow = this.tapRow.bind(this)をコンストラクタに追加しようとしましたが、それは役に立ちません。

テストの場合は、onPress={this.tapRow}も実行しました。これはエラーを引き起こすことはありませんが、関数は呼び出されません(私は確認するために単純なconsole.logを行います)

onPressで呼び出される関数を取得して引数を与えますか?

+0

はtapRow、tapRow =(rowData)=> { はconsole.log( "TEST")でこれを行うことを試みます。 } –

+0

@GaneshCaudaこれは私が試したことであり、もう一度やり直しました。 '_this3.tapRow'の同じ問題は未定義です。 –

+0

ああ、onpressはこれをやろうとします。onPress = {()=> this.tapRow({rowData})} –

答えて

0

バインドコンストラクタにrenderRow機能:

constructor (props) { 
    super(props) 
    this.renderRow = this.renderRow.bind(this) 
} 
関連する問題