React Native ListView的Item设置点击事件时null is not an object

先贴下代码:

<ListView 
                    contentContainerStyle = {styles.list}
                    pageSize={2}
                    dataSource = {this.state.dataSource}
                    renderRow={this._renderRow}
                />

_renderRow(rowData) {
        console.log('rowData.url: '+ rowData.url) ;
        console.log('rowData.name: '+ rowData.name) ;
        return (
            <TouchableOpacity onPress = {() =>this._pressRow(rowData.url)} underlayColor = "transparent" >
            <View>
            <View style={styles.row}>
            <Text style={styles.text}> {rowData.name} </Text>
             </View>
            </View>
            </TouchableOpacity>
        )
    }

ListView里的renderRow={this._renderRow},然后会报错,显示null is not an object (evaluating '_this3._pressRow'),上图:
这里写图片描述
一看就知道是找不到方法,后来查阅这个资料,知道了解决方法,原来renderRow要与外面的this绑定起来,这个跟Android里的上下文环境Context很像:

<ListView 
                    contentContainerStyle = {styles.list}
                    pageSize={2}
                    dataSource = {this.state.dataSource}
                    renderRow={this._renderRow.bind(this)}
                />

http://stackoverflow.com/questions/36303634/reactnative-tapping-row-in-listview-gives-error-cannot-read-property-pressr

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值