218. Post Browser 에서 처음 실행 시 CanceledError 발생
useEffect(() => {
const controller = new AbortController();
const fetchPosts = async () => {
try {
setIsLoading(true);
const { data } = await axiosInstance.get(
`/posts?_page=${currentPage}&_limit=${limit}&q=${encodeURIComponent(searchText)}`,
{
signal: controller.signal,
},
);
setPosts(data);
} catch (e) {
console.log(e);
if (e instanceof Error && e.name !== "CanceledError") {
if (e.message.includes("timeout")) {
setError("timeout 오류 발생");
} else {
setError(e.message);
}
}
} finally {
if (!controller.signal.aborted) setIsLoading(false);
}
};
fetchPosts();
return () => {
controller.abort();
};
}, [currentPage, limit, searchText]);처음 실행 시(새로고침)
console.log(e)
에서
CanceledError {message: 'canceled', name: 'CanceledError', code: 'ERR_CANCELED', config: {…}, request: XMLHttpRequest, …}
이렇게 무조건 잡히는데 왜 그럴 까요? 물론 프로그램 실행 에는 문제가 없습니다.
Câu trả lời 3
0
안녕하세요, 인프런 AI 인턴입니다. jyuvenia님.
useEffect 훅을 사용하는 코드에서 CanceledError가 발생하는 이유는 다음과 같습니다. useEffect는 컴포넌트가 마운트되거나 의존성 배열 내의 값이 변경될 때마다 실행됩니다. 이 과정에서 이전에 시작된 비동기 요청이 여전히 진행 중인 경우, AbortController를 사용해 해제(abort)하면서 CancelledError가 발생하게 됩니다.
간단히 요약하자면, React 컴포넌트의 재랜더링 또는 언마운트 과정에서 요청이 중단되면서 CanceledError가 발생하는 것입니다. 이 오류는 자연스러운 동작이며 별도의 프로그램 실행에는 영향을 주지 않으므로 걱정하지 않으셔도 됩니다.
CanceledError에 대한 핸들링을 하지 않으시거나, 콘솔에 출력되지 않도록 조치하시면 불필요한 오류 기록을 피할 수 있습니다.
추가로, 이와 관련된 유사한 사례나 해결 방안이 궁금하시면, 아래의 질문과 답변 링크를 참고해보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
상태(State) 가 "시간이 지남~" 에 대해 질문 있습니다.
0
29
2
import {} 중괄호 차이점
0
33
2
[ 문의]몽고DB connect 의 건
0
41
2
제공되는 react_code.zip 중에 ..
0
39
2
커리큘럼 비활성화
0
44
2
설명하시는 개념들을 잘 모르겠습니다.
0
42
2
이해가 절반 정도 되는데요.
0
53
1
styled-components(전역)
0
49
1
cloudinary 관련
0
68
3
useOptimistic 실전-1 useState
0
85
2
discord 초대장 갱신이 필요한거같습니다.
0
80
1
할일 관리 앱(메모이제이션)
0
97
2
Web 플랫폼 등록
0
137
2
함수 정의 기준
0
84
2
fetch는 사용되는가
0
86
2
전역상태 관리 선택 기준
0
104
2
tailwind css는 언제 사용되는가 또 다른 css와의 차이
0
202
2
카카오 web플랫폼 등록
0
185
2
컴포넌트 그리고 폴더 구조에 대해
0
76
2
152강 보는중입니다. 초시계부분이구요. 넘버가 timeout을 받을수없다는 에러가 나오고 있어요
0
50
1
폼테그 다른 태그를 하나의 상태 객체로 묶기
0
53
2
class를 className으로 전부 수정하실 때
0
49
2
JWT에 대한 개념도 학습할 수 있나요?
0
74
2
수업자료 다운로드
0
60
2

