React native 反应导航-如何在屏幕之间重复传递数据?
我是一个全新的本地人,这让我很困惑。很抱歉,如果这个问题有点基本,但我有困难谷歌反应本土的东西 因此,我有两个页面(屏幕):React native 反应导航-如何在屏幕之间重复传递数据?,react-native,React Native,我是一个全新的本地人,这让我很困惑。很抱歉,如果这个问题有点基本,但我有困难谷歌反应本土的东西 因此,我有两个页面(屏幕): 第一个屏幕(主屏幕)为空 在第二个屏幕(添加屏幕)中,有人员列表。您可以从列表中选择一个,它将添加到第一个屏幕 这就是我到目前为止所做的,我创建了一个包含所有人的全局变量 global.allPerson='' 在第一个屏幕中,我将getParam作为第二个屏幕的参数接收器(如果存在),然后合并到全局变量 const{navigation}=this.props; con
global.allPerson=''代码>
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,但它可以工作。谢谢如果对您来说比较干净,请将传递给函数,然后让按钮调用该函数。很高兴我能帮上忙,因为当我第一次开始工作的时候,我也花了一段时间才意识到这一点!