React Native + React Navigation v5 - 在两个堆栈之间发送参数在模拟器上可以工作,但在真实设备上不能工作。

问题描述 投票:0回答:1

所以,我有一个标签导航器,每个标签上有一个堆栈。下面是一个简化的设置。

<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>
  )
}

在我的Dashboard中,我有一个计划列表,我在每个计划上有一个TouchableOpacity,并有这个onPress。

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

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

我很感激任何关于可能发生的事情的想法或想法。谢谢!所以,我有一个Tab导航器。

react-native react-navigation
1个回答
1
投票

Lol, whoops. 这是我自己的愚蠢错误。

很明显,如果你把一个未定义的值传给一个对象,它就会丢掉那个键。

所以在我的例子中,我发送的是 params: { selectedName: undefined }因为那是唯一的钥匙,所以它返回了 params: {} 我误解为没有发送我的params的反应导航问题,那么为什么在dev(模拟器)和staging(TestFlight设备)上会有不同?

那么,为什么我在dev(模拟器)和staging(TestFlight设备)上的情况有所不同呢?时间久远的传统,Staging API与我本地的dev API不同步。"Selected Name "是一个嵌套在其他一些对象中的值,而将它添加到api响应中的分支并没有部署到staging中去!这就是为什么在dev(模拟器)和TestFlight设备上,我的参数不一样的原因。

© www.soinside.com 2019 - 2024. All rights reserved.