관련 코드는 여기 에서 확인 가능합니다 :)
첫째날에는 create-react-native
를 이용하여 App 프로젝트를 생성하고, typescript 환경으로 구성했습니다.
오늘은, Home
, Map
두개의 페이지를 만들고, react-router-native
를 이용하여 router를 구성해, 각 페이지에 연결시켜보고자 합니다.
router 설정하기
1) react-router-native
설치하기
yarn add react-router-native
라우터를 설정하기 위해서 react-router-native를 설치합니다. :)
2) Home.tsx
, Map.tsx
만들기
저는 component모음은 components
폴더에, 페이지 모음은 containers
에 만들고자 했습니다.
containers 폴더에 Home.tsx
, Map.tsx
예시파일을 만들었습니다.
- Home.tsx
import * as React from 'react';
import { StyleSheet, Text, View } from 'react-native';
const Home = () => {
return (
<View style={styles.container}>
<Text>Open up App.tsx to start working on your app!</Text>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});
export default Home;
- Map.tsx
import * as React from 'react';
import { View, Text } from 'react-native';
const Map = () => {
return (
<View style={styles.container}>
<Text>Map Page</Text>
</View>
);
};
const styles = {
container: {
flex: 1,
backgroundColor: '#fff',
},
};
export default Map;
3) Routes
컴포넌트 만들기
App.tsx에서 바로 router를 설정해 주어도 되겠지만, 저는 Routes.tsx
를 만들고,
라우팅만 관리하는 컴포넌트를 하나 따로 생성하고자 했습니다.
import * as React from 'react';
import { NativeRouter as Router, Route, Switch } from 'react-router-native';
// containers
import Home from 'containers/Home';
import Map from 'containers/Map';
const Routes = () => {
return (
<Router>
<Switch>
<Route exact path='/' component={Home} />
<Route exact path='/map' component={Map} />
</Switch>
</Router>
);
};
export default Routes;
react-router-native
는 웹용으로는 react-router-dom
이 있습니다. 사용법은 거의 동일합니다.
다만, react-router-dom에는 BrowserRouter
HashRouter
처럼 라우터의 종류별로 객체가 생성될수 있는게 특징입니다.
Home과 Map 컨테이너들을 라우터에 연결시켜 줍니다.
4) App.tsx 수정하기
Routes 컴포넌트를 연결하고 이전에 있던 내용은 삭제했습니다.
import React from 'react';
import { StyleSheet } from 'react-native';
import Routes from './src/Routes';
export default function App() {
return (
<Routes />
);
}
yarn start
를 이용해서 iOS Simulator를 띄우면, /
로 설정했던 Home 컨테이너로 먼저 이동합니다.
5) 페이지 이동을 위한 Link
추가하기
페이지 이동을 위해, Home 컨테이너와 Map 컨테이너 두 화면에 Link를 이용하도록 하겠습니다.
react-router-native 내에는 Link
컴포넌트가 있어, 페이지 이동시 활용할 수 있습니다.
Home.tsx
const Home = () => {
return (
<View style={styles.container}>
<Text>Open up App.tsx to start working on your app!</Text>
<Link to='/map'>
<Text>Move to Map</Text>
</Link>
</View>
);
};
Map.tsx
const Map = () => {
return (
<View style={styles.container}>
<Text>Map Page</Text>
<Link to='/'><Text>Move to Home</Text></Link>
</View>
);
};
결과물
결과물은 이렇게 나옵니다. :)
이로써, 라우터 설정 및 화면 이동 테스트가 끝났습니다. 인제, 디자인 컴포넌트를 선정하고, 화면에 적용할 일이 남았네요 :)