【发布时间】:2020-08-16 17:38:18
【问题描述】:
考虑以下场景。
基本上我们有一个 MaterialTopTabNavigator 嵌套在 StackNavigator 中。
如何将我的数据从函数一直传递到MaterialTopTabNavigator。注意MaterialTopTabNavigator要先经过StackNavigator
file1.js
const[test,setTest] = useState('testing');
function moveToResults(){
navigation.navigate('Results', test)
}
这里我们有一个简单的函数,它使应用导航到不同的屏幕并传递test 的状态。当moveToResults() 被调用时,我们会:
file2.js // 注意 PostFun 是 StackNavigator 的主页。
const Tab = createMaterialTopTabNavigator();
function PostFun({navigation}) {
return (
<Tab.Navigator
initialRouteName="Feed"
activeColor="#e91e63"
tabBarOptions={{
labelStyle: {fontSize:12, color:"#faa19b"},
tabStyle: {height:65, justifyContent: "flex-end"},
}}
style={styles.header}>
<Tab.Screen name="Activity" component={FindFunActivity} />
<Tab.Screen name="Event" component={FindFunEvent} />
</Tab.Navigator>
);
}
File2.js 是 `MaterialTopTabNavigator 的开头,您可以看到此导航有两个顶部选项卡(Activity 和 Event)。
其中一个选项卡可能看起来像这样,这是我需要显示变量的地方:
file3.js
const FindFunEvent = (navigation) =>{
return(
<View>
<Text>{navigation.getParam()}</Text>
</View>
)
}
问题
如何让我的test 变量显示在FindFunEvent 组件中?
这比什么都难解释,如果你愿意,这里是视觉效果。
【问题讨论】:
-
getParam在 v4 中工作。由于您使用的是 v5,因此您应该使用this.props.route.params -
@SDushan 感谢您的帮助,为了更好地理解,您会这样做:
this.navigation.route.params?我做对了吗? -
只是
route.params。检查这个 - reactnavigation.org/docs/params -
@SDushan 什么也没发生,我实际上得到了一个 route var missing 错误。问题是变量必须经过两次导航才能到达最终显示位置。
-
两次导航是什么意思?
标签: reactjs react-native parameter-passing react-navigation