#react-native #react-navigation #stack-navigator #tabnavigator
#react-native #react-навигация #stack-navigator #tabnavigator
Вопрос:
На моем главном экране (я использовал App.js в качестве моего домашнего) у меня есть createStackNavigator с createAppContainer для отображения всех экранов с помощью React-Navigation. Это сработало, и я могу явно перейти к любому из этих экранов с любого экрана. Теперь я хочу добавить панель навигации нижней вкладки на главный экран с помощью «createBottomTabNavigator».
Вот упрощенная версия моих кодов:
import { createStackNavigator, createAppContainer, createBottomTabNavigator } from 'react-navigation';
import Screen1 from './Screens/Screen1';
import Screen2 from './Screens/Screen2';
import Screen3 from './Screens/Screen3';
class HomeScreen extends React.Component {
render() {
return (
<View><Text>Welcome</Text></View>
);
}
}
const AppNavigator = createStackNavigator({
Home: { screen: HomeScreen },
Screen1: { screen: Screen1 },
Screen2: { screen: Screen2 },
Screen3: { screen: Screen3 },
});
export default createAppContainer(AppNavigator);
Я хочу добавить панель навигации внизу, вот так:
const TabNavigator = createBottomTabNavigator({
Home: { screen: HomeScreen },
Screen3: { screen: Screen3 },
});
export default createAppContainer(TabNavigator);
Это не позволит использовать два «экспорта по умолчанию» на одной странице. Как я могу добавить «createBottomTabNavigator», сохранив «createStackNavigator» для отображения всех моих экранов?
Ответ №1:
Вы можете использовать код следующим образом:
import { createStackNavigator, createAppContainer, createBottomTabNavigator } from 'react-navigation';
import Screen1 from './Screens/Screen1';
import Screen2 from './Screens/Screen2';
import Screen3 from './Screens/Screen3';
class HomeScreen extends React.Component {
render() {
return (
<View><Text>Welcome</Text></View>
);
}
}
const AppNavigator = createStackNavigator({
Home: { screen: TabNavigator },
Screen1: { screen: Screen1 },
Screen2: { screen: Screen2 },
Screen3: { screen: Screen3 },
});
const TabNavigator = createBottomTabNavigator({
Home: { screen: HomeScreen },
Screen3: { screen: Screen3 },
});
export default createAppContainer(AppNavigator);
Ответ №2:
Что-то вроде этого.
import { createStackNavigator, createAppContainer, createBottomTabNavigator } from 'react-navigation';
import Screen1 from './Screens/Screen1';
import Screen2 from './Screens/Screen2';
import Screen3 from './Screens/Screen3';
import Screen4 from './Screens/Screen4';
const Home = createStackNavigator({
Screen1, Screen2
});
const List = createStackNavigator({
Screen3, Screen4
});
const TabNav = createBottomTabNavigator({
Home, List
});
export default createAppContainer(TabNav);
Здесь вашим домом может быть Screen1
и Screen2
может быть элемент Screen1 и то же самое для Screen3 and Screen4
Комментарии:
1. Просто вопрос, когда вы объявляете более одного экрана для «Home», а затем добавляете «Home» в BottomTabNavigator, всегда ли вкладка «Home» переходит к первому экрану, который вы объявили для «Home»?
2. Сначала он, как всегда, перейдет к первому экрану, например, здесь к screen1, но если вы хотите добавить еще экран, вам просто нужно добавить его в свой домашний стек, поскольку он похож на Screen1, Screen2, Screen3. затем, если вам это нужно, перейдите к какому-нибудь экранному примеру Screen3, вы просто вызываете this.props.navigation.navigate(‘Screen3’, {name: ‘somename’}); при нажатии на какую-либо кнопку