-
React Native에서 화면 전환하기 - Stack, Drawer, TabReact Native 2024. 11. 11. 14:12
NavigationContainer 관련 install을 따로 진행해야 하는 불편함이 있다.버전도 1년 새에 3버전이나 update되어 호환성 잘 지켜야 함.
[ 두 화면간 단순히 화면 전환 하는 법 ]
Stack.screen에 두개의 화면을 저장해 둔 후, 각 화면에서 name으로 접근 해 Button으로 navigate
// 메인 접근.js (index.tsx) import { Text, View, StyleSheet, Button } from "react-native"; import { NavigationContainer } from '@react-navigation/native'; import { createStackNavigator } from '@react-navigation/stack'; import HomeScreen from './src/home'; import UserScreen from './src/user'; const Stack = createStackNavigator(); // navigator, screen 프로퍼티 return export default function Index() { return ( <NavigationContainer independent={true}> <Stack.Navigator> <Stack.Screen name="Home" component={HomeScreen} options={{headerShown: false}}/> <Stack.Screen name="User" component={UserScreen}/> </Stack.Navigator> </NavigationContainer> ); }
home.js
import 'react-native-gesture-handler'; import React, { Component } from 'react'; import { View, Text, Button } from 'react-native' class HomeScreen extends Component { render() { return ( <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> <Text>Home Screen</Text> <Button title="To User Screen" onPress={()=> { this.props.navigation.navigate('User') }} /> </View> ) } } export default HomeScreen;
user.js
import 'react-native-gesture-handler'; import React, { Component } from 'react'; import { View, Text, Button } from 'react-native' class UserScreen extends Component { render() { return ( <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> <Text>User Screen</Text> <Button title="To Home Screen" onPress={()=> { this.props.navigation.navigate('Home') }} /> </View> ) } } export default UserScreen;
[ 화면 이동 시 데이터 전달 ]
index.tsx (app.js)
import HomeScreen from './src/home'; import UserScreen from './src/user'; const Stack = createStackNavigator(); // navigator, screen 프로퍼티 return export default function Index() { return ( <NavigationContainer independent={true}> <Stack.Navigator initialRouteName="User"> <Stack.Screen name="Home" component={HomeScreen} options={{title: "Home Screen"}} /> <Stack.Screen name="User" component={UserScreen} initialParams={{ userIdx: 50, userName: "Gildong", userLastName: "Go" }} options={{ // title: "User Screen", // headerTitleStyle: { // fontWeight: 'bold', // color: 'purple' // } }} /> </Stack.Navigator> </NavigationContainer> ); }
각각 home.js / user.jsparam으로 데이터를 전달한다
Draw Navigator, Tab Navigator도 코드 구성 방식은 유사함.
각 Navigator도 각각 install 진행해야함.
'React Native' 카테고리의 다른 글
네이티브앱 통합 관점에서 RN vs Flutter (0) 2024.11.19 왜 네이티브 개발에는 상태관리 개념이 없는가? (0) 2024.11.18 [iOS 네이티브 앱에 RN화면 접목하기] (0) 2024.11.11 Props에 대해 (0) 2024.11.11 React Native Redux에 대해 (0) 2024.11.08