Expo Router로 탐색 구현하기
형식이 지정된 경로와 딥 링크를 지원하는 파일 기반 탐색을 위해 Expo Router를 설정합니다.
Expo Router로 탐색 구현하기은(는) CoddyKit의 무료 React Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 React Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
엑스포 라우터란 무엇인가요
엑스포 라우터는 리액트 네이티브를 위한 파일 기반 라우팅 라이브러리이며 리액트 내비게이션을 기반으로 합니다. Next.js 앱 라우터처럼 파일 구조가 탐색 경로를 정의합니다.
설치
엑스포 라우터가 미리 구성된 새 엑스포 프로젝트를 생성하십시오.
# Create new project:
npx create-expo-app@latest my-app --template tabs
# Or add to existing Expo project:
npx expo install expo-router react-native-safe-area-context react-native-screens파일 기반 경로
app/ 디렉터리의 파일은 자동으로 경로가 됩니다. index.tsx는 루트이고 [id].tsx는 동적 세그먼트입니다.
app/
_layout.tsx # root layout (Stack navigator)
index.tsx # → / (home screen)
profile.tsx # → /profile
posts/
_layout.tsx # posts stack layout
index.tsx # → /posts
[id].tsx # → /posts/123 (dynamic)루트 레이아웃
루트 _layout.tsx는 모든 화면을 프로바이더로 감싸고 최상위 내비게이터를 정의합니다.
// app/_layout.tsx
import { Stack } from 'expo-router';
export default function RootLayout() {
return (
<Stack>
<Stack.Screen name="index" options={{ title: 'Home' }} />
<Stack.Screen name="profile" options={{ title: 'Profile' }} />
</Stack>
);
}Link를 사용한 탐색
선언적 탐색에는 expo-router의 Link 컴포넌트를 사용하십시오. 이는 next/link와 비슷합니다.
import { Link } from 'expo-router';
function HomeScreen() {
return (
<Link href="/profile">Go to Profile</Link>
);
}useRouter를 사용한 탐색
명령형 탐색에는 useRouter()를 사용하십시오. 프로그래밍 방식으로 경로를 추가하거나, 바꾸거나, 뒤로 이동할 수 있습니다.
import { useRouter } from 'expo-router';
function LoginForm() {
const router = useRouter();
async function handleLogin() {
await login();
router.replace('/dashboard');
}
}동적 경로
동적 경로 파일에서 useLocalSearchParams()를 사용하여 경로 매개변수에 접근하십시오.
// app/posts/[id].tsx
import { useLocalSearchParams } from 'expo-router';
export default function PostScreen() {
const { id } = useLocalSearchParams<{ id: string }>();
return <PostDetail postId={id} />;
}탭 탐색
하단 탭 탐색을 사용하려면 그룹 레이아웃 안에서 expo-router의 Tabs를 사용하십시오.
// app/(tabs)/_layout.tsx
import { Tabs } from 'expo-router';
export default function TabLayout() {
return (
<Tabs>
<Tabs.Screen name="index" options={{ title: 'Home', tabBarIcon: ({ color }) => <HomeIcon color={color} /> }} />
<Tabs.Screen name="explore" options={{ title: 'Explore' }} />
</Tabs>
);
}모달 화면
Stack.Screen 옵션에서 presentation: 'modal'을 설정하면 화면을 모달로 표시할 수 있습니다.
// app/_layout.tsx
<Stack.Screen name="modal" options={{ presentation: 'modal', title: 'Settings' }} />
// Navigate to modal:
router.push('/modal');딥 링크
엑스포 라우터는 딥 링크를 자동으로 처리합니다. app.json에서 URL 스킴을 정의하면 myapp://posts/123과 같은 링크가 올바른 화면을 엽니다.
// app.json
{
"expo": {
"scheme": "myapp"
}
}인증 패턴
인증 상태에 따라 인증 화면이나 앱 탭을 조건부로 렌더링하는 루트 레이아웃을 사용하십시오.
// app/_layout.tsx
import { Redirect } from 'expo-router';
function RootLayout() {
const { user } = useAuth();
if (!user) return <Redirect href="/login" />;
return <Stack />;
}빠른 확인
/posts/[id]의 id와 같은 동적 경로 매개변수를 읽는 엑스포 라우터 훅은 무엇인가요?
복습
엑스포 라우터는 파일 기반 라우팅을 사용합니다. app/index.tsx는 홈으로, app/[id].tsx는 동적 경로로 연결됩니다. _layout.tsx에서 레이아웃을 정의하고, Link 또는 useRouter()로 탐색하며, useLocalSearchParams()로 매개변수를 읽으십시오.
자주 묻는 질문
“Expo Router로 탐색 구현하기” 강의는 무료인가요?
네 — “Expo Router로 탐색 구현하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 React Academy 강의 전체를 잠금 해제할 수 있습니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“Expo Router로 탐색 구현하기”에서 뭘 배우나요?
형식이 지정된 경로와 딥 링크를 지원하는 파일 기반 탐색을 위해 Expo Router를 설정합니다. 브라우저에서 직접 실행하는 실습 코드로 React Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
React Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 React Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“Expo Router로 탐색 구현하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 React Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 React Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- React Native 핵심 컴포넌트와 웹 DOM 비교
- StyleSheet API와 Flexbox로 스타일 지정하기
- Expo Router로 탐색 구현하기
- 기기 API 접근: 카메라, 위치와 푸시 알림