react-native页面之间的相互传值

之前在自己学习react-native的时候,在页面跳转和传值问题上花了一段时间去网上搜索和查找资料,自己总结了两个方法。可以参考 https://blog.csdn.net/shb2058/article/details/80390468 和 https://blog.csdn.net/shb2058/article/details/80432014
首先设置一个不带参数的页面跳转使用navigation
切换路由方法:

  • this.props.navigation.goBack() 返回上一层
  • this.props.navigation.popToTop() 返回堆栈最顶层
  • this.props.navigation.push(‘Details’) 继续往下推送新的路由,相当于子页面的子页面
  • this.props.navigation.navigate(‘Details’) 将新路由推送到导航器中,如果没有在导航器中,则跳转到该页面

父页面:

  1. import {Component} from "react";
  2. import {
  3. Text,AlertStatic as Alert,
  4. TouchableOpacity,
  5. View,
  6. DeviceEventEmitter
  7. } from "react-native";
  8. import {createStackNavigator} from "react-navigation";
  9. import B from '../B.js';
  10. calss A extends Component {
  11. render(){
  12. return(
  13. <View>
  14. <TouchableOpacity onpress={
  15. ()=>{
  16. this.props.navigation.navigate('B')
  17. }
  18. }>
  19. <Text>点击跳转</Text>
  20. </TouchableOpacity>
  21. </View>
  22. )
  23. }
  24. }
  25. const HomeScreen = createStackNavigator({
  26. Home: {screen: A},
  27. Details: {screen: B},
  28. });
  29. module.exports = A;

子页面:

  1. import {Component} from "react";
  2. import {
  3. Text,
  4. TouchableOpacity,
  5. View,
  6. DeviceEventEmitter
  7. } from "react-native";
  8. class B extends Component {
  9. render(){
  10. return(
  11. <View>
  12. <TouchableOpacity onpress={
  13. ()=>{
  14. this.props.navigation.goBack();
  15. }
  16. }>
  17. <Text>点击返回</Text>
  18. </TouchableOpacity>
  19. </View>
  20. )
  21. }
  22. }
  23. module.exports = B;

接下来带参数传递
父页面传给子页面

  1. <TouchableOpacity onpress={
  2. ()=>{
  3. this.props.navigation.navigate('B',{
  4. params:xx,
  5. })
  6. }
  7. }>

子页面接收参数

  1. constructor(props){
  2. super(props);
  3. const {navigation} = this.props;
  4. let yy = navigation.getParam("params");
  5. }

这样子页面就获取到父页面传递过来的值了。
然后是子页面带参数返回页面
方法一:
子页面传递参数

  1. <TouchableOpacity onpress={
  2. ()=>{
  3. this.props.navigation.state.params.callBack(params);
  4. this.props.navigation.goBack();
  5. }
  6. }>
  7. <Text>点击返回</Text>
  8. </TouchableOpacity>

父页面接收参数

  1. <TouchableOpacity onpress={
  2. ()=>{
  3. this.props.navigation.navigate('B',{
  4. params:xx,
  5. callBack:(params) =>{
  6. Alert(params);
  7. }
  8. })
  9. }
  10. }>

方法二:添加一个监听器DeviceEventEmitter
子页面

  1. TouchableOpacity onpress={
  2. ()=>{
  3. DeviceEventEmitter.emit('returnData',params);
  4. this.props.navigation.goBack();
  5. }
  6. }>
  7. <Text>点击返回</Text>

父页面

  1. componentDidMount() {
  2. DeviceEventEmitter.addListener("returnData", (params) => {
  3. Alert(params);
  4. })
  5. }

OK,就这样了~~~

react-native页面之间的相互传值的更多相关文章

  1. React Native 系列(五) -- 组件间传值

    前言 本系列是基于React Native版本号0.44.3写的.任何一款 App 都有界面之间数据传递的这个步骤的,那么在RN中,组件间是怎么传值的呢?这篇文章将介绍到顺传.逆传已经通过通知传值. ...

  2. react native 页面跳转

    React Native目前有几个内置的导航器组件,一般来说我们首推Navigator.它使用纯JavaScript实现了一个导航栈,因此可以跨平台工作 场景简单来说其实就是一个全屏的React组件. ...

  3. Iframe父页面与子页面之间的相互调用

    iframe元素就是文档中的文档. window对象: 浏览器会在其打开一个HTML文档时创建一个对应的window对象.但是,如果一个文档定义了一个或者多个框架(即:包含一个或者多个frame或者i ...

  4. Django+ajax 返回json数据挨个显示在页面及页面和后台相互传值

    通过Ajax传到后台一个值,根据该值返回数据库表中的某一列的值,然后逐个显示到页面,并且给每个加上超链接,可以进行点击查看详细信息 1.通过Ajax传到后台一个值,红色部分为往Django后台传值,蓝 ...

  5. 父子页面之间元素相互操作(iframe子页面)

    js/jquery获取iframe子页面中元素的方法: 一.使用window.frames["iframe的ID"]获取元素 window.onload = function() ...

  6. JavaScript父子页面之间的相互调用

    父页面: <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>< ...

  7. uniapp与webview之间的相互传值

    1.uni-app 如何发送数据到 H5? 其实很接单.在 web-view 中只需要通过 URL 就可以向 H5 进行传参 例如在 uni-app 中: <template> <v ...

  8. JS页面之间传值

    父页面与子页面之间有多种传值的方式: 第一种,通过window.open的方法打开一个新的页面,在新的页面里面通过window.opener来获取对象,以下为实例 父页面: function open ...

  9. React Native导航器之react-navigation使用

    在上一节Navigation组件,我们使用系统提供的导航组件做了一个跳转的例子,不过其实战能力不强,这里推荐一个超牛逼的第三方库:react-navigation.在讲react-navigation ...

随机推荐

  1. struts2中的session使用

    1.1. 如何获取Session 1.1.1. 获取Session的方式 Struts2中获取Session的方式有3种,大家掌握其中任何一种都可以. 通过ActionContext.getConte ...

  2. ubuntu-12.04下安装postgresql

    2013-10-01 20:42:57|    moniter参考资料:Ubuntu 12.04下PostgreSQL-9.1安装与配置详解(在线安装)一.安装postgresqlbamboo@bam ...

  3. POJ 1502 水 dij

    题意:给N,表示N个节点. 给半个邻接矩阵,本身到本身的距离是0,边是双向的.当两个节点之间没有直接的边连接的时候,用x表示. 问从第一个节点到其他所有节点至少花费的时间. 这题唯一的处理是处理邻接矩 ...

  4. LinkedList总结

    1,LinkedList也是继承了List的接口 所以在LinkedList中存储的也是有序的,不唯一的数据 它采用的是链表式储存,所以比较适合用来执行插入,删除等功能 2,LinkedList特有的 ...

  5. SpringMVC get请求中文乱码

    针对GET请求的编码问题,则需要改tomcat的server.xml配置文件,如下: 原 <Connector connectionTimeout="20000" port= ...

  6. android多个fragment返回键层层返回

    在FragmentActivity的fragment跳转的时候加入到执行栈. public void switchFrag(BaseFragment to) { getSupportFragmentM ...

  7. 5 微信票据 access_token--开发微信的第二道坎儿

    一 access_token基本概念 定义:access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存. 时效性:access_ ...

  8. NoSQL之Redis探析

    下载地址:wget http://download.redis.io/releases/redis-2.8.8.tar.gz安装steps:1 下载Official Website : http:// ...

  9. oracle sql 超长报ORA-01460错误

    程序查找数据的时候报错了: ORA-01460: 转换请求无法实施或不合理 这是什么鬼?不合理你就提嘛,报错干什么. 程序原本好好的,现在突然报错了.数据库并没有什么更改. 后来猜测是因为执行的SQL ...

  10. ExtJs 中获取 radiobutton 的值

    ExtJs中使用radiobutton,想在ExtJs本身代码中(注意,不是在后台喔)获取 radioButton 的值,居然发现很难,无从下手的感觉.后来在网上寻寻觅觅,痛苦摸索之后,真是大跌眼镜. ...