React Native 无法从“屏幕模式”推送屏幕
2022-06-23
2251
我有一个如下的模态屏幕:
<Stack.Screen name="ForwardChatContent" component={ForwardChatContentScreen}
options={{
presentation: 'modal',
}} />
我想从这个屏幕推送一个屏幕,例如我有如下的其他屏幕:
<Stack.Screen name="ForwardChatToUser" component={ForwardChatToUserScreen}
但是当使用导航时,它没有显示新屏幕,有人可以帮忙吗?谢谢
更新,我将 ForwardChatContent 和 ForwardChatToUser 更改为堆栈导航器,如下所示:
const forwardStack = () => {
return <Stack.Navigator>
<>
<Stack.Screen name="ForwardChatContent" component={ForwardChatContentScreen}
options={{
presentation: 'modal',
}} />
<Stack.Screen name="ForwardChatToUser" component={ForwardChatToUserScreen}
options={{
// presentation: 'modal',
}} />
</>
</Stack.Navigator>
}
导航时我使用此代码:
RootNavigation.navigate('ForwardChat', {message : props.currentMessage})
但在 ForwardChatContent 中我收到错误 ERROR TypeError:未定义不是对象(评估“route.params.message”) * 因为我使用此代码获取消息:
const message = route.params.message
您能提供一些方法来获取参数吗,谢谢
2个回答
这是因为当您将屏幕作为 Modal 打开时,它会被视为现有导航堆栈中的一组单独集合,它期望 Modal 是导航堆栈,而不仅仅是屏幕。
就您而言,
ForwardChatContentScreen
只是一个简单的 <Stack.Screen> 它没有导航堆栈。
将其从屏幕更改为导航堆栈即可工作,并以您的屏幕为根打开导航堆栈作为 Modal,然后它就可以工作了。
在此处查看 演示
干杯。
iphonic
2022-06-23
我知道这个问题已经很老了,但是我自己现在已经处理过这个问题了,我发现一个解决方案是在导航之前调用 pop:
RootNavigation.pop();
RootNavigation.navigate('ForwardChat', {message : props.currentMessage})
将此作为 @iphonic 提供的解决方案的替代解决方案发布
alex sarbu
2023-03-20