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 }) }
.