首页 > 解决方案 > React Native + React Navigation v5 - 在两个堆栈之间发送参数适用于模拟器,但不适用于真实设备

问题描述

所以,我有一个选项卡导航器,每个选项卡上都有一个堆栈。下面是一个简化的设置。

<Tab.Navigator>
  <Tab.Screen name="Home" component={HomeStack} />
  <Tab.Screen name="PlanStack" component={PlanStack} />
</Tab.Navigator>

function HomeStack() {
  return (
    <Stack.Navigator headerMode="none">
      <Stack.Screen name="Dashboard" component={Dashboard} />
    </Stack.Navigator>
  )
}

function PlanStack() {
  return (
    <Stack.Navigator headerMode="none">
      <Stack.Screen name="Plans" component={Plans} />
      <Stack.Screen name="Plan" component={Plan} />
    </Stack.Navigator>
  )
}

在我的仪表板中,我有一个计划列表,并且每个计划都有一个 TouchableOpacity,带有这个 onPress:

onPress={() => { navigate('PlanStack', {
  screen: 'Plan',
  params: { planId }
}) }}

在 iOS 模拟器中,发送了 planId,但是当我构建应用程序并部署到 Test Flight 时,param 对象为空。

我会很感激任何关于可能发生的事情的想法或想法。谢谢!

标签: react-nativereact-navigation

解决方案


大声笑,哎呀。这是我自己的愚蠢错误:

显然,如果您将未定义的值传递给对象,它只会删除该键。

所以在我的情况下,我正在发送params: { selectedName: undefined },因为这是唯一的关键,它正在返回params: {},我将其误解为关于不发送我的参数的反应导航问题。

那么为什么对我来说开发(模拟器)和登台(TestFlight 设备)有什么不同呢?Staging API 与我的本地开发 API 不同步的悠久传统。“选定名称”是一个返回嵌套在其他几个对象中的值,并且将其添加到 api 响应的分支没有部署到登台!


推荐阅读