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

Expo v4/React 顶部标签导航如何在多个Tab屏幕间共享传递参数

解决方案

方案1:通过Tab导航的initialParams共享参数(适合静态参数场景)

首先调整跳转逻辑,把需要共享的参数直接传给父级OrderScreen,不要嵌套在子页面的params里:

// 跳转时代码修改
navigation.navigate('Order', {datas: someDatas});

然后修改OrderScreen代码,给所有Tab子页面配置相同的initialParams:

import { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';

const Tab = createMaterialTopTabNavigator();

export default function OrderScreen({navigation, route}) {
  // 拿到传给Order页面的所有共享参数
  const sharedParams = route.params

  return (
    <Tab.Navigator>
      {/* 给每个Tab页面都传入共享的初始参数 */}
      <Tab.Screen 
        name="Details" 
        component={DetailsScreen} 
        initialParams={sharedParams}
      />  
      <Tab.Screen 
        name="Photos" 
        component={PhotosScreen} 
        initialParams={sharedParams}
      />
    </Tab.Navigator>
  );
}

最后子页面直接从自身的route props里取参数即可:

// PhotosScreen.tsx 示例
export default function PhotosScreen({route}) {
  // 直接获取共享参数
  const datas = route.params.datas
}
// DetailsScreen.tsx 示例
export default function DetailsScreen({route}) {
  const datas = route.params.datas
}

方案2:直接透传Props(适合参数会动态更新的场景)

如果共享参数后续会在OrderScreen里动态变更,用initialParams无法同步更新的话,可以用Tab.Screen的children渲染方式直接透传参数:

// OrderScreen 修改示例
import { useState } from 'react';

export default function OrderScreen({navigation, route}) {
  const [sharedData, setSharedData] = useState(route.params.datas)

  return (
    <Tab.Navigator>
      <Tab.Screen name="Details">
        {() => <DetailsScreen datas={sharedData} updateDatas={setSharedData} />}
      </Tab.Screen>  
      <Tab.Screen name="Photos">
        {() => <PhotosScreen datas={sharedData} updateDatas={setSharedData} />}
      </Tab.Screen>
    </Tab.Navigator>
  );
}

子页面直接从props取对应参数即可:

export default function PhotosScreen({datas, updateDatas}) {
  // 直接使用透传的参数,还能调用方法更新全局共享数据
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:15:04