React native 反应导航-如何在屏幕之间重复传递数据?

React native 反应导航-如何在屏幕之间重复传递数据?,react-native,React Native,我是一个全新的本地人,这让我很困惑。很抱歉,如果这个问题有点基本,但我有困难谷歌反应本土的东西 因此,我有两个页面(屏幕): 第一个屏幕(主屏幕)为空 在第二个屏幕(添加屏幕)中,有人员列表。您可以从列表中选择一个,它将添加到第一个屏幕 这就是我到目前为止所做的,我创建了一个包含所有人的全局变量 global.allPerson='' 在第一个屏幕中,我将getParam作为第二个屏幕的参数接收器(如果存在),然后合并到全局变量 const{navigation}=this.props; con

我是一个全新的本地人,这让我很困惑。很抱歉,如果这个问题有点基本,但我有困难谷歌反应本土的东西

因此,我有两个页面(屏幕):

  • 第一个屏幕(主屏幕)为空
  • 在第二个屏幕(添加屏幕)中,有人员列表。您可以从列表中选择一个,它将添加到第一个屏幕
  • 这就是我到目前为止所做的,我创建了一个包含所有人的全局变量

    global.allPerson=''

  • 在第一个屏幕中,我将getParam作为第二个屏幕的参数接收器(如果存在),然后合并到全局变量

    const{navigation}=this.props;
    const personName=navigation.getParam('personName','');
    global.allPerson+=“\n”+人名

  • 我从第二个屏幕向第一个屏幕传递一个参数,如下所示

    this.props.navigation.navigate('Home',{peopleName:'Eric'})}>添加此人

  • 这是可行的,但每次我单击指向第二个屏幕的链接,显然是
    global.allPerson+=“\n”+personName再次触发

    假设我先选“埃里克”,然后选“迈克尔”,它就变成了“埃里克·迈克尔”

    我也尝试过使用state,但它不是持久的,它只会显示最后选择的一个


    在这一点上,我不知道什么是正确的方式来创造这样的东西,任何人都可以告诉我正确的方式?谢谢

    以下是我如何使用StackNavigator解决此问题的示例:

    主页

    <Button onPress={() => {
        this.props.navigation.navigate('Settings', {previousState: this})
    }}>
        Some text
    </Button>
    
    componentWillUnmount() {
       this.props.navigation.state.params.previousState.setState({
         data: 'Some data I'm passing back to the previous state'
       });
    }
    
    这不需要打开
    componentWillUnmount()
    ,您可以在任何时间、任何地点从任何函数触发它。我的用例恰好是当我卸载(返回)到您可以使用的上一个组件时:

    this.props.navigation.goBack(null)
    
    因此,在调用goBack之前,可以重置以前的状态


    希望这有意义。

    您使用的导航器是什么?因为当您执行
    this.props.navigation.navigate('Home',{data})
    时,您正在设置一个新实例,而不是更新旧状态。如果您使用的是堆栈导航器,您可以将中的当前状态解析到下一个导航器,更新,然后重新设置上一个状态。我使用的是react navigation v2。我听说这是react native的官方导航解决方案。你能照你说的做吗?对不起,不是我的意思!使用react导航,您可以使用不同类型的导航器。StackNavigator、DrawerNavigator、SwitchNavigator等。啊,对不起,StackNavigator工作正常!我用新值表示当前状态,并将setState内容放在onPress中,因为我需要同时触发goBack,但它可以工作。谢谢如果对您来说比较干净,请将传递给函数,然后让按钮调用该函数。很高兴我能帮上忙,因为当我第一次开始工作的时候,我也花了一段时间才意识到这一点!