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

Posted buries

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 多页面之间传值

servlet中能够相互传值吗

如何在不同iframe之间传值

如何向一个页面中的两个iframe传值

vue父子组件之间相互传值

vue父子组件之间相互传值