【问题标题】:How to add Button to a BottomTabNavigator on React Native?如何在 React Native 上将 Button 添加到 BottomTabNavigator?
【发布时间】:2021-01-01 20:28:01
【问题描述】:

我的目标是为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>
  );
}

【问题讨论】:

    标签: react-native react-navigation react-navigation-v5


    【解决方案1】:

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

    你可以导航,这里我已经给出了警告

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

    【讨论】:

    • 这种方法效果很好,谢谢!但是,最新的 react-navigation 5.x 需要在 Screen 组件中定义一个组件 prop。如果您尝试这样做并且它会引发错误,则使用空的占位符组件将起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2022-01-15
    • 2019-10-23
    • 1970-01-01
    • 2020-11-26
    相关资源
    最近更新 更多