Javascript를 배우고 있습니다. 매일 배운 것을 이해한만큼 정리해봅니다.
1달 간 React Native를 이용해서 모바일 어플리케이션을 만들었고, 이 때 어플리케이션 내 이동 구조 설계에 React Navigation을 사용했다. 프로젝트는 마쳤지만 Stack 개념을 사용해서 navigation이 움직인다는 흥미로운 사실을 잊고 싶지 않아 TIL로 정리해본다.
const AppStack = createStackNavigator(
{
Home: {
// initial screen
screen: HomeTabs,
navigationOptions: {
headerShown: false,
},
},
AddCatModal: {
// Home에서 이동해 AddCatModal으로 이동하면 스택에 2개 노드가 쌓인 것
screen: AddCatModal,
navigationOptions: {
headerTitle: false,
headerStyle: {
elevation: 0,
shadowOpacity: 0,
},
},
},
},
{
initialRouteName: 'Home',
modal: 'modal',
},
);
const AppNavigator = createStackNavigator({
Home: HomeScreen,
Settings: SettingsScreen,
});
const RootNavigator = createSwitchNavigator({
Login: LoginScreen,
App: AppNavigator,
});
export default function App() {
return (
<NavigationContainer>
<Stack.Navigator>
{isLoggedIn ? (
<> //로그인을 한 상태
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Settings" component={SettingsScreen} />
</>
) : ( // 로그인을 하지 않은 상태
<Stack.Screen name="SignIn" component={SignInScreen} />
)}
</Stack.Navigator>
</NavigationContainer>
);
}
import * as React from 'react';
import { Text, View } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
function HomeScreen() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Home!</Text>
</View>
);
}
function SettingsScreen() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Settings!</Text>
</View>
);
}
const Tab = createBottomTabNavigator();
export default function App() {
return (
<NavigationContainer>
<Tab.Navigator>
<Tab.Screen name="Home" component={HomeScreen} />
<Tab.Screen name="Settings" component={SettingsScreen} />
</Tab.Navigator>
</NavigationContainer>
);
}
navigation.navigate('특정 화면')
처럼 임의로 이동을 시킬 수도 있다.
좋은 포스팅 감사합니다 :-D
이번에 RN에 관심을 갖고 공부하다 Navigation을 알게되어 인스타그램처럼 바텀 / 헤더 네비게이션 해볼려고 하는데
좋은 참고자료인거 같습니다.