App
디렉토리에 파일이 추가되면 해당 파일은 자동으로 내비게이션의 경로가 됩니다.
우리는 이 Expo 라우팅에서 지원하는 기능인 페이지/다이나믹 라우팅에 대해 알아보겠습니다.📦 app
┣ 📜 index.tsx -> '/'
┣ 📜 home.tsx -> '/home'
┣ 📂 setting
┗ ┗ 📜 index.tsx -> '/setting'
index.tsx
는 루트 경로로 설정되고, home.tsx
는 /home
경로로 설정됩니다. 이렇게 설정된 경로는 다음과 같이 사용할 수 있습니다.import { router } from 'expo-router';
import { Button } from 'react-native';
export default function Index() {
return (
<>
<Button
title="Go to Home"
onPress={() => router.push('/home')}
/>
<Button
title="Go to Setting"
onPress={() => router.push('/setting')}
/>
</>
);
}
📦app
┣ 📜 _layout.tsx -> 루트 레이아웃
┣ 📜 index.tsx
┣ 📜 home.tsx
┣ 📂 setting
┗ ┗ 📜 index.tsx -> /setting에 적용되는 레이아웃
(그룹명)
이렇게 생성한 그룹은 📦app
┣ 📜 _layout.tsx
┣ 📜 index.tsx
┣ 📜 home.tsx
┣ 📂 setting
┗ ┗ 📜 index.tsx
┗ 📂 (group) -> 그룹 생성
┗ ┗ 📜 _layout.tsx
┣ ┗ 📜 sitemap.tsx -> '/sitemap'
┗ ┗ 📜 about.tsx -> '/about'
[]
📦app
┣ 📜 _layout.tsx
┣ 📜 index.tsx
┣ 📜 home.tsx
┣ 📂 user
┗ ┗ 📜 [id].tsx -> '/user/{id}'
user/[id].tsx
는 /user/{id}
경로로 설정됩니다. 이렇게 설정된 경로는 다음과 같이 사용할 수 있습니다.import { router } from 'expo-router';
import { Button } from 'react-native';
export default function Index() {
return (
<>
<Button
title="Go to User"
onPress={() => router.push('/user/1')}
/>
</>
);
}
id
는 동적 매개변수로 사용되며, user/[id].tsx
파일에서 id
를 사용할 수 있습니다.import { useLocalSearchParams } from 'expo-router';
import { Text, View } from 'react-native';
export default function User() {
const { id } = useLocalSearchParams();
return (
<View>
<Text>{id}</Text>
</View>
);
}
📦app
┣ 📜 _layout.tsx
┣ 📜 index.tsx
┣ 📜 home.tsx
┣ 📂 [id]
┣ ┣ 📜 mypage.tsx -> '/{id}/mypage'
┗ ┗ 📜 edit.tsx -> '/{id}/edit'
[]
로 설정하면 됩니다.import { useLocalSearchParams } from 'expo-router';
import { Text, View } from 'react-native';
export default function MyPage() {
const { id } = useLocalSearchParams<{ id: string }>();
return (
<View>
<Text>{id}</Text>
</View>
);
}