React-Native-ListView、ListViewItem(子、父组件互相传值)
2017-04-05 22:02
531 查看
首先记录下实现ListView的过程吧http://www.jianshu.com/p/031df20b0e78
ListViewItem
代码地址:https://github.com/chjwrr/React-Native-UI-Test
constructor(props) { super(props); //其中提供给数据源的rowHasChanged函数可以告诉ListView它是否需要重绘一行数据 // 即数据是否发生了改变,即在需要重绘界面的时候会进行判断 // 如果之前页面中的改行数据没有发生变化,则不再进行重绘,否则进行重绘 var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); this.state = { //然后通过cloneWithRows方法为其传递一个数组 dataSource: ds.cloneWithRows(this.getDataArray()), }; } //初始化数组数据 getDataArray () { var dataArray = []; for (let i = 0 ; i<10 ; i ++) { dataArray.push('row' + i); } return dataArray; } //子组件向父组件传值需要调用的方法 onChildChanged (newState) { alert(newState); } //相当于iOS中的cell,返回一个视图布局 _renderRow (rowData, sectionID,rowID){ return ( //相当于单独的cell //rowData、sectionID、rowID是给ListViewItem传的值(父组件向子组件传值) //callbackParent,是一个方法,用于接收子组件向父组件传的消息 //子组件向父组件回传时,会调用this.onChildChanged这个方法 <ListViewItem rowData={rowData} sectionID={sectionID} rowID={rowID} callbackParent={this.onChildChanged}/> ); } //分割线 _renderSeparator(rowData, sectionID, rowID, highlightRow) { return( <View style={{backgroundColor:'red',height:1}}></View> ) } render() { return ( <ListView style={{flex:1}} dataSource={this.state.dataSource} renderRow={this._renderRow.bind(this)} renderSeparator={this._renderSeparator.bind(this)} /> ); }
ListViewItem
//此方法解决 Touchable child must either be native or forward setNativeProps to a native component. //参考:http://reactnative.cn/docs/0.20/direct-manipulation.html setNativeProps(nativeProps) { this.refs._root.setNativeProps(nativeProps); } render() { //接收父组件向子组件传的值 const {rowData,sectionID,rowID} = this.props; return ( <TouchableOpacity ref="_root" style={ListViewItem_TestStyle.itemStyle} onPress={() => { //在子组件中点击按钮,这里将事件传递给父组件, this.props.callbackParent('你好啊'); }}> //使用传过来的值 <Text>{'rowdata:'+this.props.rowData}</Text> <Text>{'sectionID:'+this.props.sectionID}</Text> <Text>{'rowID:'+this.props.rowID}</Text> </TouchableOpacity> ); } } let ListViewItem_TestStyle =StyleSheet.create({ itemStyle:{ height:60, } })
代码地址:https://github.com/chjwrr/React-Native-UI-Test
相关文章推荐
- ReactNative中FlatList(ListView已过期)组件
- react-native组件传值与封装
- react-native中ListView组件点击跳转的方法示例
- [React-Native] ListView 组件
- 【React Native开发】React Native控件之ListView组件解说以及最齐全实例(19)
- react native组件学习之listview
- React-Native ListView加载图片淡入淡出效果的组件
- React-Native ListView拖拽交换Item
- React native从入门到深入 ---页面传值,父子组件传值
- 【React Native开发】React Native控件之ListView组件讲解以及最齐全实例(19)
- (十)React Native---ListView 组件
- 《React-Native系列》16、 RN组件之ListView
- React-native 常见问题:Warning 当使用组件 react-native-gifted-listview
- react-native 组件之间传值
- React-Native ListView拖拽交换Item
- 《React-Native系列》16、 RN组件之ListView
- React Native知识10-ListView组件
- React-Native 填坑之ListView(item更新)
- React-Native组件之 TabBarIOS和TabBarIOS.Item
- react-native组件中NavigatorIOS和ListView结合使用的方法