첫 로드시 동일한 이미지 두번호출
일단 저는 공개/비공개는 제외하고 만들고 있었는데 ImageContext에서 prevDara를 추가한 이후로 첫 로드시에 첫번째 이미지 리스트들을 두번 호출하는데 어떤 방식으로 해결해야 할까요???
옵저버가 발동 되면 두번째 페이지 리스트들은 한번만 호출이 되는데 첫번째 페이지에 해당되는 이미지들만 두번이 호출되버립니다 ㅠㅠ
깃허브에 임시로 올려두긴 했는데 다른 파일들은 문제가 없어 보이긴 합니다ㅠㅠ
useEffect(() => {
if(pastImageUrlRef.current === imageUrl) return;
setImageLoad(true);
axios
.get(imageUrl)
.then((result) => setImages((prevData) => [...prevData, ...result.data]))
.catch((err) => {
console.error(err);
setImageError(err)
})
.finally(() => {
setImageLoad(false);
pastImageUrlRef.current = imageUrl;
});
}, [imageUrl]);
回答 1
1
StrictMode 문제로 보이네요!
어느 시점부터 root.render 할 때 컴퍼넌트 트리를 <React.StrictMode>...</React.StrictMode> 로 감싸기 시작했는데요.
이 경우 개발 모드에서는 하위 컴퍼넌트들의 useEffect 가 두번씩 실행됩니다. 우선 간단한 해결책으로는 StrictMode를 제거하시면 오류가 없어질거에요. StrictMode 업데이트가 많은 혼란은 일으켰던 업데이트였는데요. 리엑트의 버그라고 주장하던 사람들도 있었습니다.
StrictMode를 도입한 이유는 "버그"를 빨리 찾을 수 있도록 돕기 위함이에요. "effect"가 중복으로 발생해도 문제가 없어야 한다. 중복으로 발생했을 때 문제가 되면 잘못 useEffect를 잘못 사용하는거라는거죠.
StrictMode를 사용하면서 해결하는 간단한 방법은 setImages를 할 때 필터를 할 수 있는 방법이 있을 것 같아요. 대중적이고 더 좋은 방법으로는 react-query 같은 라이브러리를 이용해서 스테이트를 관리하는 방법도 있어요. 아직 대중적이지는 않지만 개인적으로 가장 좋은 방법은 react-router 6.4버전부터 지원하는 loader, action을 이용하는거에요. 그러면 "컴퍼넌트 밖"에서 이런 데이터 작업을 대부분 처리 할 수 있게 되요. 버그의 주요인인 useEffect도 훨씬 덜 사용하게 되고요
Router.use 두번째 파라미터 ImageRouter : undefined 전달 오류
0
107
2
소스코드 요청
0
153
1
프록시 관련 질문
0
151
1
Presigned URL 사용시 데이터베이스 저장 시점
0
322
1
이미지 등록시 자동 등록 오류
0
211
1
강의에 사용된 코드 다운 받는 사이트 주소 있나요?
0
373
2
axios 이용해서 백엔드로 이미지 전송 중 새로고침
0
471
1
ImageList 컴포넌트에서 업로드 한 사진을 리스트에서 바로 보기 위해 이 방법도 괜찮나요??
0
377
1
이미지 처음 올릴 때만 나타나는 오류
0
250
1
es6 스타일로 Import 할때 동작하지 않습니다.
0
382
1
이미지 업로드시
0
359
1
node js를 이용하고 mysql에 이미지 경로 저장
2
1258
1
선생님 cloudFront를 사용하게되면 S3는 private으로 사용하는게 좋을까요
0
539
1
선생님 aws-sdk 모듈을 찾을 수 없다고 합니다.
0
663
1
new aws.S3 version 확인
2
506
1
react-router-dom v6 useHistory 이슈
7
636
0
람다에서 시간 초과 에러가 뜹니다!
0
315
1
이미지 업로드 시 배열로
2
524
1
Promise.all에 대한 질문
0
421
1
세션에 관한 질문이 있습니다.
0
428
1
Promise.all관련 질문 ("여러 이미지 미리보기" 중...)
0
303
1
cdn 주소
0
502
1
특정 user 페이지 가져오기 질문있습니다.
0
289
1
mime-types에서 jpg타입 저장이 안됩니다.
0
414
2

