您的位置:首页 > Web前端 > React

react-native 组件之间传值

2017-09-06 10:09 417 查看
1.通过 AsyncStorage 将值保存在本地(最低端的方法)

import {
AsyncStorage,
} from 'react-native';

// 保存 IP
AsyncStorage.setItem('LoginIP',new_value);

// 获取IP
let ApiBase;
AsyncStorage.getItem('LoginIP')
.then((value) => {
that.setState({
ApiBase: value
});
});


2.定义成员属性 通过 props 传值(父组件向子组件传值)

CommunalCell.js

定义成员属性 接收外部传值

/**
* Cell
*/
import React, { Component } from 'react';
import {
StyleSheet,
Text,
View,
} from 'react-native';

import PropTypes from 'prop-types';

export default class CommunalCell extends Component {

// 定义成员属性
static propTypes = {
name:PropTypes.string,
gender:PropTypes.string,
};

render() {
return (
<View>
<Text>姓名:{this.props.name}</Text>
<Text>姓名:{this.props.gender}</Text>
</View>
);
}
}

const styles = StyleSheet.create({

});


引用 传值

// 引入 cell
import CommunalCell from '../main/CommunalCell';

// 返回每一行cell的样式
renderRow(rowData) {
// 使用cell组件
return(
<CommunalCell
name={rowData.name}
gender={rowData.gender}
/>
);
}


3.通过回调方法传值 (子组件向父组件传值)

子组件

// 提供参数出去,便于外部调用
static defaultProps = {
removeModal:{}
}

// 定义方法,便于组件触发
popToHome(data) {
// 向外部传值(向父组件传值)
this.props.removeModal(data);
}

// 返回右边按钮
renderRightItem() {
return(
<TouchableOpacity
onPress={() => {this.popToHome(false)}}
>
<Text style={styles.navbarRightItemStyle}>关闭</Text>
</TouchableOpacity>
);
}


  

父组件

// 接收子组件的回调
render(){
return(
<ChartModal removeModal={(data) => this.closeModal(data)} />
);
}

// 根据返回值,触发事件
closeModal(data) {
this.setState({
isChartModal:data
})
}


.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: