在LisvView的cell中呼叫TouchableOpacity的onPress方法時報錯
阿新 • • 發佈:2018-11-21
在LisvView的cell中呼叫TouchableOpacity的onPress方法時報錯
在LisvView的cell中呼叫TouchableOpacity的onPress方法時報錯的問題。
錯誤提示(見下圖):該方法不是一個function, 這個有點蒙逼了(明明是function)
解決辦法:在ListView的renderRow方法中繫結this
renderRow={this.renderRow.bind(this)}
部分原始碼如下:
render() { return( <View style={{flex: 1}}> <ListView showsVerticalScrollIndicator={false} dataSource={this.state.dataSource} {/*錯誤的程式碼:renderRow={this.renderRow}*/} renderRow={this.renderRow.bind(this)} renderHeader={this.renderHeader} ></ListView> </View> ); }
renderRow(rowData) { return( <TouchableOpacity activeOpacity={0.5} onPress={()=>{this.showNewsDetailView()}} > <View style={styles.newsRowStyle}> <Image source={{uri: rowData.imgsrc}} style={styles.newsImageStyles}></Image> <View style={styles.contentStyles}> <Text style={styles.newsTitleStyles}>{rowData.title}</Text> </View> </View> </TouchableOpacity> ); } renderHeader() { return( <AdvScrollView></AdvScrollView> ); } showNewsDetailView() { console.log('點選cell') }
原文:https://blog.csdn.net/wj610671226/article/details/53889379?utm_source=copy