React Navigation - почему панель навигации появляется под заголовком, а не внизу

Это файл-контейнер. Здесь я определил все необходимые детали для нижней навигации, и она отображается в верхней части экрана, но должна отображаться в нижней части экрана.

import { NavigationContainer } from "@react-navigation/native";
import MaterialCommunityIcons from "react-native-vector-icons/MaterialCommunityIcons";

import HomeScreen from "./Fragments/HomeScreen";
import WalletScreen from "./Fragments/WalletScreen";
import ProfileScreen from "./Fragments/ProfileScreen";
import { StyleSheet, View } from "react-native";
const Tab = createBottomTabNavigator();

import { Platform } from "react-native";
export const tabBarHeight = Platform.OS === "ios" ? 60 : 45;
function MyTabs() {
  return (
    <NavigationContainer>
      <Tab.Navigator
        initialRouteName = "Home"
        screenOptions = {{
          tabBarStyle: {
            backgroundColor: "#03dbfc",
            height: tabBarHeight,
          },
          tabBarActiveTintColor: "white",
        }}
      >
        <Tab.Screen
          name = "Home"
          component = {HomeScreen}
          options = {{
            tabBarLabel: "Home",
            tabBarIcon: ({ color, size }) => (
              <MaterialCommunityIcons name = "home" color = {color} size = {size} />
            ),
          }}
        />
        <Tab.Screen
          name = "Wallet"
          component = {WalletScreen}
          options = {{
            tabBarLabel: "Wallet",
            tabBarIcon: ({ color, size }) => (
              <MaterialCommunityIcons name = "wallet" color = {color} size = {size} />
            ),
          }}
        />
        <Tab.Screen
          name = "Profile"
          component = {ProfileScreen}
          options = {{
            tabBarLabel: "Profile",
            tabBarIcon: ({ color, size }) => (
              <MaterialCommunityIcons name = "face" color = {color} size = {size} />
            ),
          }}
        />
      </Tab.Navigator>
    </NavigationContainer>
  );
}

export default MyTabs;

Я не вижу содержимое каждого экрана или фрагмента.

Home.js

import { Text } from "react-native";

const HomeScreen = ({ navigation }) => {
  return <Text>Home</Text>;
};

export default HomeScreen;

Профиль.js

import React from "react";
import { Text } from "react-native";

const ProfileScreen = ({ navigation }) => {
  return <Text>Profile</Text>;
};

export default ProfileScreen;

Wallet.js

import React from "react";
import { Text } from "react-native";

const WalletScreen = ({ navigation }) => {
  return <Text>Wallet</Text>;
};

export default WalletScreen;

React Navigation - почему панель навигации появляется под заголовком, а не внизу

Пожалуйста, ответьте на этот вопрос. Я новичок в React Native.

App.js

import { NavigationContainer } from "@react-navigation/native";

import Header from "./components/Header/Header";
import BottomNavigation from "./components/BottomNavigation/BottomNavigation";
export default function App() {
  return (
    <View>
      <Header title = "ApnaPayment" />
      <BottomNavigation />
    </View>
  );
}

Не могу не попробовать <View style = {{flex:1}}>

carlosdafield 22.03.2022 04:40

@carlosdafield Я полагаю, вы говорите, что оберните контейнер в View, а затем примените этот стиль, верно? Но это не сработало.

Rahul Choudhary 22.03.2022 05:01
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
0
2
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта проблема возникает из-за того, что View на App.js сжимает содержимое страницы. Вам не нужно создавать компонент заголовка, react-navigation предоставит его вам. Я предлагаю вам удалить компонент заголовка в App.js и добавить заголовок заголовка в качестве параметра экрана в вашем навигаторе. Еще один совет: вам не нужно определять высоту вкладок, react-navigation также предоставляет ее по умолчанию. Следуйте приведенному ниже примеру кода.

Файл с вашим навигатором:

// Some code above...

function MyTabs() {
  return (
    <NavigationContainer>
      <Tab.Navigator
        initialRouteName = "Home"
        screenOptions = {{
          tabBarStyle: {
            backgroundColor: "#03dbfc",
          },
          tabBarActiveTintColor: "white",
          title: "ApnaPayment",
        }}
      >
        <Tab.Screen
          name = "Home"
          component = {HomeScreen}
          options = {{
            tabBarLabel: "Home",
            tabBarIcon: ({ color, size }) => (
              <MaterialCommunityIcons name = "home" color = {color} size = {size} />
            ),
          }}
        />
        <Tab.Screen
          name = "Wallet"
          component = {WalletScreen}
          options = {{
            tabBarLabel: "Wallet",
            tabBarIcon: ({ color, size }) => (
              <MaterialCommunityIcons name = "wallet" color = {color} size = {size} />
            ),
          }}
        />
        <Tab.Screen
          name = "Profile"
          component = {ProfileScreen}
          options = {{
            tabBarLabel: "Profile",
            tabBarIcon: ({ color, size }) => (
              <MaterialCommunityIcons name = "face" color = {color} size = {size} />
            ),
          }}
        />
      </Tab.Navigator>
    </NavigationContainer>
  );
}

export default MyTabs;

Ваш App.js:

// Some code above...

export default function App() {
  return (
    <BottomNavigation />
  );
}

Спасибо. Можно ли использовать изображение в качестве заголовка?

Rahul Choudhary 22.03.2022 06:30

Да, просто добавьте изображение в качестве компонента на headerTitle в качестве опции. Вы можете увидеть пример в документации.

Marcelo Freire 22.03.2022 07:43

Другие вопросы по теме