我有一个模式屏幕如下:
<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:undefined不是一个对象(评估'route.params. message')****因为我使用此代码来获取消息:
const message = route.params.message
你能提供一些方法来获取参数吗,谢谢
2条答案
按热度按时间vulvrdjw1#
这是因为当你以Modal打开一个屏幕时,它被视为现有导航堆栈的一个单独的集合,它期望Modal是一个NavigationStack,而不仅仅是一个屏幕。
在您的例子中,
ForwardChatContentScreen
只是一个简单的<Stack.Screen>,它没有导航堆栈。将其更改为NavigationStack从屏幕它将工作,并打开NavigationStack作为模态有你的屏幕作为根,然后它将工作。
检查demo here
干杯。
f87krz0w2#
我知道这个问题已经很老了,但我现在已经处理了这个问题,作为一个解决方案,我发现在导航之前调用pop:
发布此作为@iphonic提供的解决方案的替代方案