728x90
Fetch문은 필수
프로젝트에서 Fetch문은 당연히 필수적으로 사용하는 부분입니다. 근데 이 Fetch문에서 문제가 생기는 경우가 많다는 걸 조금씩 깨닫고 있습니다. Fetch가 끝나지 않았는데 존재하지도 않는 데이터로 map()함수를 돌린다던지....(이전 포스팅) 등등 BE-FE의 통신 부분인 Fetch문이 굉장히 중요합니다.
그렇다면 FE에서도 이런 Fetch문을 그냥 둘수는 없지 않을까요? BE에서 여러가지 경우의 수를 생각하며 Validation과 Try-Catch문에 힘을 쓰는데, 우리도 Fetch에서 에러가 났을 때 확인도 하고, 처리도 할 수 있도록 해야 하지 않을까요?
단순 Fetch 코드
useEffect(() => {
fetch('/data/releaseProducts.json')
.then(response => response.json())
.then(data => {
setProductsList(data);
});
}, []);
Try-Catch, Async-Await로 묶어 준 개선 코드
useEffect(() => {
const fetchData = async () => {
try {
const response = await fetch('/data/releaseProducts.json');
if (!response.ok) {
throw new Error('서버가 이상합니다.');
}
const data = await response.json();
setProductsList(data);
} catch (error) {
throw new Error(`에러가 발생했습니다. ${error.message}`);
}
};
fetchData();
}, []);
솔찍히 Try-Catch문 자체가 이쁜코드와는 멀도록 만드는 ugly 코드지만 (개인적 의견입니다😭 뭔가 더 이쁜 개선책이 나왔음 좋겠습니다...ㅎㅎ) 그래도 올바른 동작을 위해서라면 에러를 잘 Catch해야겠죠..?
다행인건 async-await으로 .then().then() 없앤건 확실히 더 보기 좋은것 같습니다.
끝~!
도움 받은 링크
How to use async functions in useEffect (with examples)
과제 테스트 해설
'FrontEnd > React.js' 카테고리의 다른 글
[React.js] to-do-app, fetch => Axios 마이그레이션 과정 (0) | 2022.10.20 |
---|---|
[React.js] Github Page를 활용한 개인 프로젝트 배포 (2) | 2022.10.04 |
[React.js] delete fetch 시 'Undexpected end of JSON input' 에러 (1) | 2022.10.03 |
[React.js] Styled Components 파일 분리 멘토 코드 리뷰 (0) | 2022.09.04 |
[React.JS] (Refactor) Array.filter()를 이용한 검색 기능 리팩토링 (0) | 2022.08.16 |
[React.JS] shouldComponentUpdate(), React.memo() (0) | 2022.08.15 |
[React.JS] 함수형 컴포넌트 => 클래스형 컴포넌트 (0) | 2022.08.12 |
[ReactJS] Input 창 입력에 따른 검색 기능 (Arrays.filter() 활용) (0) | 2022.08.12 |
댓글