无法通过navigation.navigate传递参数至RestaurantInfoScreen,求正确方法
核心问题:屏幕名称拼写不一致
你代码里存在明显的拼写错误,这是导致参数传递失败的直接原因:
- 调用
navigation.navigate时使用的屏幕名称是'RestaurantInfoScreen' - 但在
RestaurantStack.Screen定义中,name属性写的是'RestauranInfoScreen'(少了一个字母t) - 同时组件名称也写错了:
ResturantInfoScreen(少了字母a,正确应为RestaurantInfoScreen)
修正后的正确代码示例
- 正确定义Stack Screen:
<RestaurantStack.Screen name="RestaurantInfoScreen" // 修正拼写,和navigate时的名称完全一致 component={RestaurantInfoScreen} // 修正组件名称拼写 initialParams={{ itemId: 46 }} />
- 正确传递参数:
你的第一种写法本身是正确的,修正屏幕名称后即可生效:
onPress={() => { navigation.navigate('RestaurantInfoScreen', { itemId: 86 }); }}
- 正确获取参数:
你当前的获取方式没问题,保持即可:
const { itemId } = route.params;
其他排查方向(如果拼写修正后仍有问题)
- 确认
route参数已正确传入RestaurantInfoScreen组件,比如函数组件需接收routeprops:
function RestaurantInfoScreen({ route }) { const { itemId } = route.params; // ... }
- 检查是否存在嵌套导航结构,如果是在嵌套导航中跳转,需确保导航目标在当前导航栈内,或使用
navigation.navigate的完整路径(比如'RootStack/RestaurantInfoScreen',根据你的导航结构调整) - 无需担心
initialParams覆盖传递参数,React Navigation中通过navigate传递的参数优先级高于initialParams
内容的提问来源于stack exchange,提问作者Asusoft
相关产品推荐
相关产品推荐

