所以,我有一个标签导航器,每个标签上有一个堆栈。下面是一个简化的设置。
<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导航器。
Lol, whoops. 这是我自己的愚蠢错误。
很明显,如果你把一个未定义的值传给一个对象,它就会丢掉那个键。
所以在我的例子中,我发送的是 params: { selectedName: undefined }
因为那是唯一的钥匙,所以它返回了 params: {}
我误解为没有发送我的params的反应导航问题,那么为什么在dev(模拟器)和staging(TestFlight设备)上会有不同?
那么,为什么我在dev(模拟器)和staging(TestFlight设备)上的情况有所不同呢?时间久远的传统,Staging API与我本地的dev API不同步。"Selected Name "是一个嵌套在其他一些对象中的值,而将它添加到api响应中的分支并没有部署到staging中去!这就是为什么在dev(模拟器)和TestFlight设备上,我的参数不一样的原因。