react native无法从'screen modal'推送屏幕

zu0ti5jz  于 2023-03-24  发布在  React
关注(0)|答案(2)|浏览(116)

我有一个模式屏幕如下:

<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

你能提供一些方法来获取参数吗,谢谢

vulvrdjw

vulvrdjw1#

这是因为当你以Modal打开一个屏幕时,它被视为现有导航堆栈的一个单独的集合,它期望Modal是一个NavigationStack,而不仅仅是一个屏幕。
在您的例子中,ForwardChatContentScreen只是一个简单的<Stack.Screen>,它没有导航堆栈。
将其更改为NavigationStack从屏幕它将工作,并打开NavigationStack作为模态有你的屏幕作为根,然后它将工作。
检查demo here
干杯。

f87krz0w

f87krz0w2#

我知道这个问题已经很老了,但我现在已经处理了这个问题,作为一个解决方案,我发现在导航之前调用pop:

RootNavigation.pop();    
RootNavigation.navigate('ForwardChat', {message : props.currentMessage})

发布此作为@iphonic提供的解决方案的替代方案

相关问题