React-Native-ListView、ListViewItem(子、父组件互相传值)
来源:互联网 发布:云服务器mysql数据库 编辑:程序博客网 时间:2024/06/10 16:20
首先记录下实现ListView的过程吧http://www.jianshu.com/p/031df20b0e78
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
1 0
- React-Native-ListView、ListViewItem(子、父组件互相传值)
- React Native 组件 ListView
- React Native 的子组件向父组件传值的简单例子
- React Native的组件ListView
- React native 父组件 子组件之间的调用
- react native组件学习之listview
- (十)React Native---ListView 组件
- react native listview组件 探索记录
- react子组件如何向父组件传值
- react子组件如何向父组件传值
- React 子组件向父组件传值
- React子组件向父组件传值
- react-native组件封装与传值
- react native组件封装及传值
- React-Native子组件修改父组件的几种方式,兄弟组件状态修改
- React-Native子组件修改父组件的几种方式,兄弟组件状态修改
- React Native-5.React Native组件封装,组件传值实例开发
- 《React-Native系列》16、 RN组件之ListView
- 螺旋方阵——递归
- Rational Rose学习笔记
- 010在网页里动态加载JavaScript
- GPUImage的集成步骤
- 内部类,匿名类
- React-Native-ListView、ListViewItem(子、父组件互相传值)
- POJ 2109 Power of Cryptography(简单计算)
- Win10系统安装GitHub客户端
- 毁掉自己的汇编程序
- 剑指Offer 44
- 结对编程--30个随机四则运算
- React-Native-TabNavigato
- PAT-B] 1001. 害死人不偿命的(3n+1)猜想 [模拟]
- leetcode解题之200. Number of Islands Java版(岛屿的数量)