🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
现在,React Native的代码对我们来说已经不陌生了,接下来我们的教程可以稍微加快一点节奏了。 在 SearchResults.js文件的解构赋值语句之后,添加样式定义: ~~~ var styles = StyleSheet.create({ thumb: { width: 80, height: 80, marginRight: 10 }, textContainer: { flex: 1 }, separator: { height: 1, backgroundColor: '#dddddd' }, price: { fontSize: 25, fontWeight: 'bold', color: '#48BBEC' }, title: { fontSize: 20, color: '#656565' }, rowContainer: { flexDirection: 'row', padding: 10 } }); ~~~ 这些代码中的样式将在渲染单元格时用到。 修改renderRow() 方法如下: ~~~ renderRow(rowData, sectionID, rowID) { var price = rowData.price_formatted.split(' ')[0]; return ( <TouchableHighlight onPress={() => this.rowPressed(rowData.guid)} underlayColor='#dddddd'> <View> <View style={styles.rowContainer}> <Image style={styles.thumb} source={{ uri: rowData.img_url }} /> <View style={styles.textContainer}> <Text style={styles.price}>£{price}</Text> <Text style={styles.title} numberOfLines={1}>{rowData.title}</Text> </View> </View> <View style={styles.separator}/> </View> </TouchableHighlight> ); } ~~~ 其中价格将以‘300,000 GBP’的格式显示,记得将GBP 后缀删除。上述代码用你已经很熟悉的方式来渲染单元格UI。缩略图以URL方式提供,React Native 自动将其解码(主线程中)。 在TouchableHightlight组件的onPress属性中再次使用了箭头函数,并将该行数据的guid作为传递的参数。 最后一个方法,用于处理点击事件 ~~~ rowPressed(propertyGuid) { var property = this.props.listings.filter(prop => prop.guid === propertyGuid)[0]; } ~~~ 这里,当用户点击某行时,通过guid去房产列表中找到对应的房屋信息。 回到模拟器,按下 Cmd+R ,观察运行结果: ![](https://box.kancloud.cn/2015-10-27_562f20d4c3a04.png) 这下看起来好多了——只不过,那些住在London的人居然住得起这么贵房子?真是令人难以置信! 接下来,我们就来实现App的最后一个界面了。