You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过navigation.navigate传递参数至RestaurantInfoScreen,求正确方法

解决React Navigation参数传递失效问题

核心问题:屏幕名称拼写不一致

你代码里存在明显的拼写错误,这是导致参数传递失败的直接原因:

  • 调用navigation.navigate时使用的屏幕名称是'RestaurantInfoScreen'
  • 但在RestaurantStack.Screen定义中,name属性写的是'RestauranInfoScreen'(少了一个字母t)
  • 同时组件名称也写错了:ResturantInfoScreen(少了字母a,正确应为RestaurantInfoScreen)

修正后的正确代码示例

  1. 正确定义Stack Screen:
<RestaurantStack.Screen
   name="RestaurantInfoScreen" // 修正拼写,和navigate时的名称完全一致
   component={RestaurantInfoScreen} // 修正组件名称拼写
   initialParams={{ itemId: 46 }}
/>
  1. 正确传递参数:
    你的第一种写法本身是正确的,修正屏幕名称后即可生效:
onPress={() => {
  navigation.navigate('RestaurantInfoScreen', { itemId: 86 });
}}
  1. 正确获取参数:
    你当前的获取方式没问题,保持即可:
const { itemId } = route.params;

其他排查方向(如果拼写修正后仍有问题)

  • 确认route参数已正确传入RestaurantInfoScreen组件,比如函数组件需接收route props:
function RestaurantInfoScreen({ route }) {
  const { itemId } = route.params;
  // ...
}
  • 检查是否存在嵌套导航结构,如果是在嵌套导航中跳转,需确保导航目标在当前导航栈内,或使用navigation.navigate的完整路径(比如'RootStack/RestaurantInfoScreen',根据你的导航结构调整)
  • 无需担心initialParams覆盖传递参数,React Navigation中通过navigate传递的参数优先级高于initialParams

内容的提问来源于stack exchange,提问作者Asusoft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:40:22