반응형
현재 소개팅앱을 만들고 있다.
거기에 바텀 내비게이션이 필요했다.
그래서 만들어 보았다.
1. createBottomTabNavigator모듈 설치
npm install @react-navigation/bottom-tabs
2. 코드
1) 기본적인 예시
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
const Tab = createBottomTabNavigator();
function MyTabs() {
return (
<Tab.Navigator>
<Tab.Screen name="Home" component={HomeScreen} />
<Tab.Screen name="Settings" component={SettingsScreen} />
</Tab.Navigator>
);
}
위와 같이하면 아래에 Home탭과 Setting탭만이 생긴다. 다른곳은 갈수 없다.
그렇다고 바텀에 다 때려박으면 밑에 메뉴가 너무 많아 난잡해질것이다.
2)나의 코드
import Login from './login/login';
import Signup from './sign_up/sign_up';
import Signup2 from './sign_up/sign_up2';
import Signup3 from './sign_up/sign_up3';
import Main from './main/Main';
import Match_page from './matchpage/match_page';
import Groupmatch from './groupmatch/groupmatch';
import Message from './message/message';
import Find_idpw from './Find_idpw/Find_idpw';
import Find_idpw2 from './Find_idpw/Find_idpw2';
import Splash from './splash/Splash';
import Setmain from './settingpage/set_main/Set_main';
import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
import MessageCollect from './messageCollect/messageCollect';
import Set_privacy from './settingpage/set_privacy/Set_privacy';
import Set_alarm from './settingpage/set_alarm/Set_alarm';
import * as React from 'react';
import {NavigationContainer} from '@react-navigation/native';
import {createStackNavigator} from '@react-navigation/stack';
import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
const Stack = createStackNavigator();
export default class App extends React.Component {
this.state={
isLoading : false,
}
componentDidMount = async () => {
setTimeout(() => {
this.setState({isLoading: true});
}, 1000);
}
render() {
return (
<NavigationContainer>
<Stack.Navigator>
{this.state.isLoading ? (
<>
<Stack.Screen
name={this.state.fisrt_name}
component={this.state.fisrt_components}
options={{headerShown: false}}
/>
<Stack.Screen
name={this.state.second_name}
component={this.state.second_components}
options={{headerShown: false}}
/>
<Stack.Screen
name="Signup"
component={Signup}
options={{headerShown: false}}
/>
<Stack.Screen
name="Signup2"
component={Signup2}
options={{headerShown: false}}
/>
<Stack.Screen
name="Signup3"
component={Signup3}
options={{headerShown: false}}
/>
<Stack.Screen
name="MessageCollect"
component={MessageCollect}
options={{headerShown: false}}
/>
<Stack.Screen
name="Message"
component={Message}
options={{headerShown: false}}
/>
<Stack.Screen
name="FriendInbox"
component={FriendInbox}
options={{headerShown: false}}
/>
<Stack.Screen
name="Find_idpw"
component={Find_idpw}
options={{headerShown: false}}
/>
<Stack.Screen
name="Find_idpw2"
component={Find_idpw2}
options={{headerShown: false}}
/>
<Stack.Screen
name="Set_privacy"
component={Set_privacy}
options={{headerShown: false}}
/>
<Stack.Screen
name="Set_alarm"
component={Set_alarm}
options={{headerShown: false}}
/>
</>
) : (
<>
<Stack.Screen
name="Splash"
component={Splash}
options={{headerShown: false}}
/>
</>
)}
</Stack.Navigator>
</NavigationContainer>
);
}
}
const Tab = createBottomTabNavigator();
function Bottom() {
return (
<Tab.Navigator>
<Tab.Screen name="Man" component={Main} />
<Tab.Screen name="Group" component={Match_page} />
<Tab.Screen name="MessageCollect" component={MessageCollect} />
{/* <Tab.Screen name="알림" component={Message} /> */}
<Tab.Screen name="Setting" component={Setmain} />
</Tab.Navigator>
);
}
바텀 네비게이션에는 Man, group, MessageCollect, Setting이라는 항목이 있고
각자 누르면 Main, Match_page, MessageCollect, Message, Setmain 컴포넌트로 이동한다.
위처럼 Man Page나 Setting Page에서는 바텀내비게이션이 유지되지만 바텀네비게이션에 속해 있지 않은 개인정보 페이지('Set_privacy' Component)같은 경우에는 바텀네비게이션이 유지되지 않는다.
그리고 ComponentDidMount부분의 this.state.isLoading값이 false였다가 1초후에 true로간다.
false면 splash화면 true면 메인페이지로 간다.(간단하게 스플래쉬 화면을 구현해 보았다.)
고수님들의 피드백... 항상 달게 받겠습니다. 봐주셔서 감사합니다. 다같이 열코!!!!!
반응형
'React Native' 카테고리의 다른 글
[React Native] Async Storage - setItem, getItem, 중복확인 검사 (0) | 2020.12.28 |
---|---|
[React Native] MAC/IOS 알람 구현하기 3(Push notification)-firebase (5) | 2020.12.10 |
[React Native] MAC/IOS 알람 구현하기 2(Push notification)-firebase (0) | 2020.12.10 |
[React Native] Android 알람 구현하기 2(Push notification)-firebase (0) | 2020.12.10 |
[React Native] MAC/IOS 알람 구현하기 1(Push notification)-firebase (0) | 2020.12.10 |