React Native 的子组件向父组件传值的简单例子
来源:互联网 发布:java开发2017就业饱和 编辑:程序博客网 时间:2024/06/05 05:00
目前只是找到了一组传值的方法
基本原理是利用RN自带的TouchableOpacity组件中的callbackParent属性来实现
上代码
父组件代码
/**
* @flow
*/
/* @flow */
//只适用于一组图片的轮播效果
/*import {
Image,
StatusBar,
StyleSheet,
Text,
TouchableWithoutFeedback,
View,
ScrollView,
AppRegistry
} from 'react-native';
import React, { Component } from 'react';
import Index from './app/compotent/article/Index.js';
export default class App extends Component {
render() {
return (
<ScrollView>
<Index/>
</ScrollView>
);
}
}*/
/**
* Created by mymac on 2017/4/1.
*/
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
View,
Text,
ListView,
TouchableHighlight,
} from 'react-native';
import ListViewItem from './ListViewItem_Test.js'
export default class App extends Component {
constructor(props) {
super(props);
//其中提供给数据源的rowHasChanged函数可以告诉ListView它是否需要重绘一行数据
// 即数据是否发生了改变,即在需要重绘界面的时候会进行判断
// 如果之前页面中的改行数据没有发生变化,则不再进行重绘,否则进行重绘
var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state = {
//然后通过cloneWithRows方法为其传递一个数组
dataSource: ds.cloneWithRows(this.getDataArray()),
ImageUrl:[1,],
};
//将this的指针转移到父组件
this.onChildChanged = this.onChildChanged.bind(this);
}
//初始化数组数据
getDataArray () {
var dataArray = [];
for (let i = 0 ; i<10 ; i ++) {
dataArray.push('row' + i);
}
return dataArray;
}
getImageUrl(){
let array=this.state.dataSource;
// array.push(newState);
console.log(array,'arry');
// this.setState({ duration: data.duration });
}
//子组件向父组件传值需要调用的方法
onChildChanged (newState) {
alert(newState);
// this.getImageUrl();
let array=this.state.ImageUrl;
array.push(newState);
console.log(array,'arry');
}
//相当于iOS中的cell,返回一个视图布局
_renderRow (rowData, sectionID,rowID){
return (
<ListViewItem rowData={rowData}
sectionID={sectionID}
rowID={rowID}
callbackParent={this.onChildChanged}/>
);
}
//点击cell触发的方法
selectCellAction(rowData, sectionID,rowID) {
alert('rowID:'+rowID);
}
_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)}
/>
);
}
}
AppRegistry.registerComponent('App', () => App);
子组件代码
/**
* Created by mymac on 2017/4/5.
*/
import React, { Component } from 'react';
import {
StyleSheet,
View,
Text,
TouchableOpacity,
} from 'react-native';
export default class ListViewItem_Test extends Component {
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(this.props.rowData);
}}>
<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,
}
})
0 0
- React Native 的子组件向父组件传值的简单例子
- React简单的分页代码实现(子组件向父组件传值)
- React Native 简单的组件
- React native 父组件 子组件之间的调用
- react子组件如何向父组件传值
- react子组件如何向父组件传值
- React 子组件向父组件传值
- React子组件向父组件传值
- React-Native子组件修改父组件的几种方式,兄弟组件状态修改
- React-Native子组件修改父组件的几种方式,兄弟组件状态修改
- React-Native-ListView、ListViewItem(子、父组件互相传值)
- React 父组件获取子组件节点的ref值
- 子组件向父组件传值
- React 的数据流动(反向由子组件向父组件传递数据)
- react-native组件的生命周期
- React Native 组件的生命周期
- React Native-组件的引用
- React Native组件的生命周期
- POJ1321棋盘问题 搜索基础题
- Service生命周期最全面解析
- 欢迎使用CSDN-markdown编辑器
- Android Tint使用
- mysql登录及常用命令
- React Native 的子组件向父组件传值的简单例子
- Android 实现可以自由移动缩放的图片控件并实现ViewPager滑动
- webpack入门看这篇就够了(转)
- Android 广播接收器(Broadcast Receivers)
- 学习play_图片上传
- HttpClient 4.5.2版本设置连接超时时间-CloseableHttpClient设置Timeout
- 9.ros_control
- update
- 解析html文档的java库及范例