如何在 React Native 上向 BottomTabNavigator 添加按钮?

kid*_*rom 2 react-native react-navigation react-navigation-v5

我的目标是为 提供顶部和底部导航栏Home, Dashboard, and Album,但不为SignIn. 问题是,我希望将按钮放在底部而不是顶部。

最后剩下的难题是如何Sign In向底部导航栏添加按钮。

障碍是,如果您编写<Tab.Screen name="Sign In component={SignIn} />并按下带有参数的按钮onPress={() => navigation.navigate('SignIn')},它会将您导航到Tab.Screen而不是Stack.Screen

const Tab = createBottomTabNavigator();
function MyTabs() {
  return (
    <Tab.Navigator>
      <Tab.Screen name="Home" component={Home} />
      <Tab.Screen name="Dashboard" component={Dashboard} />
      <Tab.Screen name="Album" component={Album} />
    </Tab.Navigator>
  );
}

const Stack = createStackNavigator();
function MyStack() {
  return (
    <Stack.Navigator>
      <Stack.Screen options={{title: ''}} name="MyTabs" component={MyTabs} />
      <Stack.Screen name="SignIn" component={SignIn} />
    </Stack.Navigator>
  );
}

export default function App() {
  return (
    <Provider store={store}>
      <NavigationContainer>
        <MyStack />
      </NavigationContainer>
    </Provider>
  );
}
Run Code Online (Sandbox Code Playgroud)

Gur*_*ran 6

您可以使用如下所示的选项卡按钮。这将传递道具并呈现可触摸的不透明度,您可以拥有自己的 onPress。

你可以导航,这里我已经提醒了

    <Tab.Screen name="Settings"  
         options={({navigation})=> ({
           tabBarButton:props => <TouchableOpacity {...props} onPress={()=>navigation.navigate('SignIn')}/>
    })}/>
Run Code Online (Sandbox Code Playgroud)

  • 这个方法效果很好,谢谢!但是,最新的 React-navigation 5.x 需要在 Screen 组件中定义一个组件 prop。如果您尝试这样做并且抛出错误,则使用空占位符组件将起作用。 (4认同)