
react native에서 여러 navigator를 사용할 수 있는데 이러한 navigator를 정의하고 나면 navigation을 활용할 수 있게 됩니다.
navigation을 사용해 화면을 이동하는 방법과 서로 다른 navigator 간 이동하는 방법을 알아보려고 합니다.
둘 모두 주로 stack navigator에서 화면을 전환할 때 사용합니다.
navigation.navigate('screen name')
import { Button } from 'react-native'
// 타입 정의
interface DiaryPageProp {
navigation: {
navigate: (arg0: string) => void;
};
}
function DiaryPage({ navigation } : DiaryPageProp) {
// 이동하는 함수 정의
function navigateToMypage() {
navigation.navigate('MyPage')
}
return (
<Button
onPress={navigateToMypage}
title="MyPage"
color="gray"
/>
)
}
navigation.push('screen name')
import { Button } from 'react-native'
// 타입 정의
interface DiaryPageProp {
navigation: {
push: (arg0: string) => void;
};
}
function DiaryPage({ navigation } : DiaryPageProp) {
// 이동하는 함수 정의
function navigateToMypage() {
navigation.push('MyPage')
}
return (
<Button
onPress={navigateToMypage}
title="MyPage"
color="gray"
/>
)
}
화면을 이동하면서 param을 함께 전달해주는 방법입니다.
navigation.push('screen name', { params name : params })
import { Button } from 'react-native'
// 타입 정의
interface DiaryPageProp {
navigation: {
push: (arg0: string, arg1?: { diaryId: Number }) => void;
};
}
function DiaryPage({ navigation } : DiaryPageProp) {
// 이동하는 함수 정의
function navigateToMypage() {
navigation.push('MyPage', { diaryId: 10 })
}
return (
<Button
onPress={navigateToMypage}
title="MyPage"
color="gray"
/>
)
}
전달한 params를 사용하는 방법입니다.
const { params name } = route.params
// 타입 정의
interface MyPageProp {
route: {
params: { diaryId: Number }
};
}
function MyPage({ route } : MyPageProp) {
const { diaryId } = route.params;
return (
<Text>{diaryId} 번 째 일기입니다.</Text>
)
}
navigation.reset({ routes: [{ name: 'screen name'}] })
interface DiaryPageProp {
navigation: {
reset: (arg0: { routes: { name: string }[] }) => void;
};
}
function DiaryPage({ navigation } : DiaryPageProp) {
// 이동하는 함수 정의
function navigateToMypage() {
navigation.reset({ routes: [{ name: 'MyPage' }] })
}
return (
<Button
onPress={navigateToMypage}
title="MyPage"
color="gray"
/>
)
navigation.navigate('navigator name', { screen: 'screen name' })
import { Button } from 'react-native'
// 타입 정의
interface DiaryPageProp {
navigation: {
navigate: (arg0: string, arg1?: { screen: string }) => void;
};
}
function DiaryPage({ navigation } : DiaryPageProp) {
// 이동하는 함수 정의
function navigateToHome() {
navigation.navigate('MainStack', { screen: 'Home' })
}
return (
<Button
onPress={navigateToHome}
title="Home"
color="gray"
/>
)
}
다른 navigator로 이동할 때 params도 전달할 수 있습니다.
navigation.navigate('navigator name', { screen: 'screen name', params: { params name: params } })
import { Button } from 'react-native'
// 타입 정의
interface DiaryPageProp {
navigation: {
navigate: (arg0: string, arg1?: { screen: string, params: { userId : Number } }) => void;
};
}
function DiaryPage({ navigation } : DiaryPageProp) {
// 이동하는 함수 정의
function navigateToHome() {
navigation.navigate('MainStack', { screen : 'Home', params: { userId: 2 } })
}
return (
<Button
onPress={navigateToHome}
title="Home"
color="gray"
/>
)
}