회원가입 성공 후 축하 모달을 보여주려고 했는데, 모달이 표시되자마자 가이드 페이지로 이동해버리는 문제가 발생했습니다.
export const handleLogin = async ({ ... }) => {
try {
// 로그인 성공 후
onSuccess?.(); // 모달 표시
navigation.reset({ // 바로 Guide로 이동
index: 0,
routes: [defaultRoute],
});
return true;
} catch (error) {
// ...
}
};
로그인 함수에서 성공 시 두 가지 작업을 연속으로 실행:
페이지 이동이 너무 빨리 일어나서 사용자가 모달을 확인할 시간이 없었음
export const handleLogin = async ({ ... }) => {
try {
// ... 로그인 처리 ...
// onSuccess가 있는 경우 네비게이션은 실행하지 않음
if (!onSuccess) {
navigation.reset({
index: 0,
routes: [defaultRoute],
});
}
// 모달만 표시
onSuccess?.();
return true;
} catch (error) {
// ...
}
};
실행 순서의 중요성
조건부 네비게이션
사용자 경험 고려
단순히 기능이 작동하는 것을 넘어서, 사용자가 각 단계를 인지하고 상호작용할 수 있도록 하는 것이 중요합니다.
네비게이션과 모달같은 UI 요소들의 실행 순서와 타이밍을 신중하게 고려해야 더 나은 사용자 경험을 제공할 수 있습니다.