1.正向传值
//params对应的就是我们要传的值,这里我传了两个值goPage2() { this.props.navigator.push({ component:SecondPageComponent, params:{//params 要和HomePage.js里面的 renderScene(route, navigator)里面设置的参数名一样 param1:'第一个参数', param2:'第二个参数', } }) }// 接收constructor(props){ super(props);//这两个属性就是我们要接收第一页传过来的两个值 this.state = { paramGet1:PropTypes.string, paramGet2:PropTypes.string, }; }//这个方法就是声明周期的其中一个了,render()运行后,就会调用这个方法,我们在这里接收传过来的两个值 componentDidMount() { //这里获取从FirstPageComponent传递过来的参数 this.setState({ paramGet1: this.props.param1, paramGet2: this.props.param2, }); }复制代码
2.反向传值 2.1类似iOS通知的回传
// 第二个页面触发buttonAction() { DeviceEventEmitter.emit('changeData','回传参数'); }// 第一个页面监听//在这个方法里面注册监听//changeData 就是监听的名字,类似通知的名字//value就是上面对应的“回传参数”,就是其他地方传过来的值//两个参数,一个是监听名字,一个是方法(收到监听处理方法)componentDidMount() { this.subscription = DeviceEventEmitter.addListener('changeData', (value) =>{ this.setState({ paramData:value, }); console.log('传过来的值是:'+value); }); }//页面移除时移除监听//类似iOS dealloc里面移除通知 componentWillUnmount() { this.subscription.remove(); }复制代码
2.2类似block传值
goPage2(type) { this.props.navigator.push({ component:SecondPageComponent, type:type, params:{//params 要和HomePage.js里面的 renderScene(route, navigator)里面设置的参数名一样 param1:'第一个参数', param2:'第二个参数', loadData:(data) => {this.loadData(data)},//回调方法 } }) } loadData(data){ console.log('回调方法传参:data='+data); }// 第二个页面 if(this.props.loadData){//这里是判断是否有这个方法的 this.props.loadData('回传参数1'); }复制代码