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

如何将React Navigation参数传递给同一Tab Navigator下的多个屏幕

核心原因

你传递给User路由的参数是挂载在Tab导航器对应的父路由上的,Tab内部的子屏幕默认和父路由参数隔离,所以无法直接通过自身的route.params读取。另外注意你原代码里UserTab内嵌套在Tab.Navigator下的组件应该用Tab.Screen而不是Stack.Screen,属于笔误,以下方案已修正该问题。

解决方案1:透传参数到Tab子屏幕(最简便)

修改UserTab组件,先接收父路由传入的参数,再通过initialParams属性传递给每个Tab子屏幕:

// 给UserTab加上route参数,它作为Stack.Screen的组件可以拿到父路由的route和navigation
const UserTab = ({ route }) => {
  // 先拿到父路由传入的共享参数
  const sharedParam = route.params?.prop_i_want_to_share;
  return (
    <Tab.Navigator>
      <Tab.Screen 
        name="UserInfo" 
        component={UserInfoScreen} 
        initialParams={{ prop_i_want_to_share: sharedParam }} 
      />
      <Tab.Screen 
        name="UserEdit" 
        component={UserEditScreen} 
        initialParams={{ prop_i_want_to_share: sharedParam }} 
      />
    </Tab.Navigator>
  );
};

改完之后你原来的UserInfoScreen和UserEditScreen里的route.params.prop_i_want_to_share就能正常读取到值了。

解决方案2:子屏幕直接读取父路由参数

如果不想改Tab导航的配置,也可以在子屏幕中直接调用父导航的API读取参数:

const UserInfoScreen = ({ navigation }) => {
  // 直接从父Stack导航器拿到User路由的参数
  const sharedParam = navigation.getParent().getParams('prop_i_want_to_share');
  return (
    <View>
      {sharedParam}
    </View>
  );
};

解决方案3:Context包裹共享(适合复杂共享场景)

如果后续要共享的参数不止一个,还有实时更新的需求,可以用React Context做局部状态共享:

// 先创建Context
const UserSharedContext = React.createContext();

// 改造UserTab用Context包裹子路由
const UserTab = ({ route }) => {
  const sharedValue = route.params?.prop_i_want_to_share;
  return (
    <UserSharedContext.Provider value={sharedValue}>
      <Tab.Navigator>
        <Tab.Screen name="UserInfo" component={UserInfoScreen} />
        <Tab.Screen name="UserEdit" component={UserEditScreen} />
      </Tab.Navigator>
    </UserSharedContext.Provider>
  )
}

// 子屏幕中使用
const UserInfoScreen = () => {
  const sharedParam = React.useContext(UserSharedContext);
  return <View>{sharedParam}</View>
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:57:03