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,就这样了~~~

原文地址:https://www.cnblogs.com/Buries/p/10985937.html

时间: 2024-08-02 19:38:18

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

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

iframe元素就是文档中的文档. window对象: 浏览器会在其打开一个HTML文档时创建一个对应的window对象.但是,如果一个文档定义了一个或者多个框架(即:包含一个或者多个frame或者iframe标签),浏览器就会为原始文档创建一个window对象,再为每个iframe创建额外的window对象,这些额外的window对象是原始窗口的子窗口. contentWindow: 是指指定的iframe或者iframe所在的window对象 Demo1 父页面fu.html: <!DOCT

页面之间跳转传值

页面之间传值: a.html <html> <head> <title> New Document </title> <script> function to (){ var getval =document.getElementById("cc").value; document.location.href("b.html?cc="+getval); } </script> </head

UItableView之间的相互传值实现

通常情况下我们在两个tableView之间进行的是传值是单向的,这种传值方式是不可逆的. 一,如果将Aview里面的值传递到Bview里面实现方法如下: 1.1 如果传递的是单条数据,在Bview里面定义一个字符串str,用来作为两个视图之间 的中介,来接受单条数据. NSString* str; 1.2 如果传递的是多条数据,需要将Aview里面的数据进行封装,这里就需要定义一个类来封装这些 数据.NSClassA* object. Class NSClassA 2 在Aview的跳转方法中,

Asp.net页面之间几种传值方法【示例】

1.Request.QueryString 在传值的页面(aspx.cs页面): Response.Redirect("QueryStringPage.aspx?Data=" + Server.UrlEncode(DataToSendTextBox.Text)); 在接收值的页面(.net前端页面): <%=Server.UrlDecode(Request.QueryString["Data"]) %> 2.HttpPost 在传值的页面(aspx页面)

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

js/jquery获取iframe子页面中元素的方法: 一.使用window.frames["iframe的ID"]获取元素 window.onload = function() { var oIframe = window.frames["oIframe"].document.getElementById("getFrame"); console.log(oIframe); } 注意:此处一定要加上window.onload或者DOMConte

JS页面之间传值

父页面与子页面之间有多种传值的方式: 第一种,通过window.open的方法打开一个新的页面,在新的页面里面通过window.opener来获取对象,以下为实例 父页面: function opennewwindow() { window.open(URL); //字符串形式的URL } 子页面: function getfatherdom() { var value=window.opener.document.getElementById(id).value; } 第二种,嵌套的形式,即子

React Native导航器之react-navigation使用

在上一节Navigation组件,我们使用系统提供的导航组件做了一个跳转的例子,不过其实战能力不强,这里推荐一个超牛逼的第三方库:react-navigation.在讲react-navigation之前,我们先看一下常用的导航组件. 导航控件 常见的导航主要分为三种: 1.StackNavigator :类似于普通的Navigator,屏幕上方导航栏 2.TabNavigator:obviously, 相当于iOS里面的TabBarController,屏幕下方标签栏 3.DrawerNavi

react native 之子组件和父组件之间的通信

react native开发中,为了封装性经常需要自定义组件,这样就会出现父组件和子组件,那么怎么在父组件和子组件之间相互通信呢,也就是怎么在各自界面push和pop.传值. 父组件传递给子组件: 父组件: 在主组件里面,使用通过写一个子组件的属性,直接把值或者navigator传给子组件即可.如下20行: 1 /** 2 * Sample React Native App 3 * https://github.com/facebook/react-native 4 * 父组件传递给子组件 5

【REACT NATIVE 系列教程之五】NAVIGATOR(页面导航)的基本使用与传参

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2248.html 今天介绍一种应用开发中常用的负责页面切换及导航功能的组件:Navigator 一:Navigator 对于页面导航其实主要功能就是:每个页面都知道本身应该切换到哪个页面,并且切到的页面会记录从哪里来,如果要返回的话,知道返回到哪个页面.这一切都不需要再用逻辑管理!而且每个页面之间也可以进行参数传递,