React Native 개발 중 흔히 마주치는 문제 중 하나는 API 응답 후 화면이 갱신되지 않는 현상입니다.
최근 매치 삭제 기능 구현 중 겪은 문제와 해결 과정을 공유하고자 합니다.
const handleDelete = async (matchId: number) => {
try {
const response = await axiosInstance.delete(`/matches/${matchId}`);
if (response.status === 200) { // 문제의 지점
Alert.alert("성공", "매치가 삭제되었습니다");
await loadParticipations();
onUpdate?.();
}
} catch (error) {
Alert.alert("오류", "매치 삭제 중 오류가 발생했습니다");
}
};
const handleDelete = async (matchId: number) => {
console.log("삭제 버튼 클릭됨, matchId:", matchId); // 단계별 로그 추가
try {
Alert.alert("매치 삭제", "정말로 이 매치를 삭제하시겠습니까?", [
{
text: "삭제",
onPress: async () => {
console.log("삭제 확인 버튼 클릭됨");
const response = await axiosInstance.delete(`/matches/${matchId}`);
console.log("삭제 API 응답:", response.status);
// ...
}
}
]);
} catch (error) {
console.error("에러 발생:", error);
}
};
삭제 버튼 클릭됨, matchId: 34
삭제 확인 버튼 클릭됨
삭제 API 응답: 204
if (response.status === 200 || response.status === 204) {
Alert.alert("성공", "매치가 삭제되었습니다");
await loadParticipations();
onUpdate?.();
}
단계별 로그 추가
API 응답 검사
비동기 처리 확인
상태 업데이트 확인
개발자 도구 활용
API 응답 처리 시에는 가능한 모든 성공 케이스(200, 201, 204 등)를 고려해야 합니다.
또한, 문제 해결을 위해서는 체계적인 로깅과 단계별 디버깅이 필수적입니다.