react-native页面之间的相互传值
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’) 将新路由推送到导航器中,如果没有在导航器中,则跳转到该页面
父页面:
- import {Component} from "react";
- import {
- Text,AlertStatic as Alert,
- TouchableOpacity,
- View,
- DeviceEventEmitter
- } from "react-native";
- import {createStackNavigator} from "react-navigation";
- import B from '../B.js';
- calss A extends Component {
- render(){
- return(
- <View>
- <TouchableOpacity onpress={
- ()=>{
- this.props.navigation.navigate('B')
- }
- }>
- <Text>点击跳转</Text>
- </TouchableOpacity>
- </View>
- )
- }
- }
- const HomeScreen = createStackNavigator({
- Home: {screen: A},
- Details: {screen: B},
- });
- module.exports = A;
子页面:
- import {Component} from "react";
- import {
- Text,
- TouchableOpacity,
- View,
- DeviceEventEmitter
- } from "react-native";
- class B extends Component {
- render(){
- return(
- <View>
- <TouchableOpacity onpress={
- ()=>{
- this.props.navigation.goBack();
- }
- }>
- <Text>点击返回</Text>
- </TouchableOpacity>
- </View>
- )
- }
- }
- module.exports = B;
接下来带参数传递
父页面传给子页面
- <TouchableOpacity onpress={
- ()=>{
- this.props.navigation.navigate('B',{
- params:xx,
- })
- }
- }>
子页面接收参数
- constructor(props){
- super(props);
- const {navigation} = this.props;
- let yy = navigation.getParam("params");
- }
这样子页面就获取到父页面传递过来的值了。
然后是子页面带参数返回页面
方法一:
子页面传递参数
- <TouchableOpacity onpress={
- ()=>{
- this.props.navigation.state.params.callBack(params);
- this.props.navigation.goBack();
- }
- }>
- <Text>点击返回</Text>
- </TouchableOpacity>
父页面接收参数
- <TouchableOpacity onpress={
- ()=>{
- this.props.navigation.navigate('B',{
- params:xx,
- callBack:(params) =>{
- Alert(params);
- }
- })
- }
- }>
方法二:添加一个监听器DeviceEventEmitter
子页面
- TouchableOpacity onpress={
- ()=>{
- DeviceEventEmitter.emit('returnData',params);
- this.props.navigation.goBack();
- }
- }>
- <Text>点击返回</Text>
父页面
- componentDidMount() {
- DeviceEventEmitter.addListener("returnData", (params) => {
- Alert(params);
- })
- }
OK,就这样了~~~
react-native页面之间的相互传值的更多相关文章
- React Native 系列(五) -- 组件间传值
前言 本系列是基于React Native版本号0.44.3写的.任何一款 App 都有界面之间数据传递的这个步骤的,那么在RN中,组件间是怎么传值的呢?这篇文章将介绍到顺传.逆传已经通过通知传值. ...
- react native 页面跳转
React Native目前有几个内置的导航器组件,一般来说我们首推Navigator.它使用纯JavaScript实现了一个导航栈,因此可以跨平台工作 场景简单来说其实就是一个全屏的React组件. ...
- Iframe父页面与子页面之间的相互调用
iframe元素就是文档中的文档. window对象: 浏览器会在其打开一个HTML文档时创建一个对应的window对象.但是,如果一个文档定义了一个或者多个框架(即:包含一个或者多个frame或者i ...
- Django+ajax 返回json数据挨个显示在页面及页面和后台相互传值
通过Ajax传到后台一个值,根据该值返回数据库表中的某一列的值,然后逐个显示到页面,并且给每个加上超链接,可以进行点击查看详细信息 1.通过Ajax传到后台一个值,红色部分为往Django后台传值,蓝 ...
- 父子页面之间元素相互操作(iframe子页面)
js/jquery获取iframe子页面中元素的方法: 一.使用window.frames["iframe的ID"]获取元素 window.onload = function() ...
- JavaScript父子页面之间的相互调用
父页面: <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>< ...
- uniapp与webview之间的相互传值
1.uni-app 如何发送数据到 H5? 其实很接单.在 web-view 中只需要通过 URL 就可以向 H5 进行传参 例如在 uni-app 中: <template> <v ...
- JS页面之间传值
父页面与子页面之间有多种传值的方式: 第一种,通过window.open的方法打开一个新的页面,在新的页面里面通过window.opener来获取对象,以下为实例 父页面: function open ...
- React Native导航器之react-navigation使用
在上一节Navigation组件,我们使用系统提供的导航组件做了一个跳转的例子,不过其实战能力不强,这里推荐一个超牛逼的第三方库:react-navigation.在讲react-navigation ...
随机推荐
- struts2中的session使用
1.1. 如何获取Session 1.1.1. 获取Session的方式 Struts2中获取Session的方式有3种,大家掌握其中任何一种都可以. 通过ActionContext.getConte ...
- ubuntu-12.04下安装postgresql
2013-10-01 20:42:57| moniter参考资料:Ubuntu 12.04下PostgreSQL-9.1安装与配置详解(在线安装)一.安装postgresqlbamboo@bam ...
- POJ 1502 水 dij
题意:给N,表示N个节点. 给半个邻接矩阵,本身到本身的距离是0,边是双向的.当两个节点之间没有直接的边连接的时候,用x表示. 问从第一个节点到其他所有节点至少花费的时间. 这题唯一的处理是处理邻接矩 ...
- LinkedList总结
1,LinkedList也是继承了List的接口 所以在LinkedList中存储的也是有序的,不唯一的数据 它采用的是链表式储存,所以比较适合用来执行插入,删除等功能 2,LinkedList特有的 ...
- SpringMVC get请求中文乱码
针对GET请求的编码问题,则需要改tomcat的server.xml配置文件,如下: 原 <Connector connectionTimeout="20000" port= ...
- android多个fragment返回键层层返回
在FragmentActivity的fragment跳转的时候加入到执行栈. public void switchFrag(BaseFragment to) { getSupportFragmentM ...
- 5 微信票据 access_token--开发微信的第二道坎儿
一 access_token基本概念 定义:access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存. 时效性:access_ ...
- NoSQL之Redis探析
下载地址:wget http://download.redis.io/releases/redis-2.8.8.tar.gz安装steps:1 下载Official Website : http:// ...
- oracle sql 超长报ORA-01460错误
程序查找数据的时候报错了: ORA-01460: 转换请求无法实施或不合理 这是什么鬼?不合理你就提嘛,报错干什么. 程序原本好好的,现在突然报错了.数据库并没有什么更改. 后来猜测是因为执行的SQL ...
- ExtJs 中获取 radiobutton 的值
ExtJs中使用radiobutton,想在ExtJs本身代码中(注意,不是在后台喔)获取 radioButton 的值,居然发现很难,无从下手的感觉.后来在网上寻寻觅觅,痛苦摸索之后,真是大跌眼镜. ...