inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이미지 관리 풀스택(feat. Node.js, React, MongoDB, AWS)

저장한 이미지가 바로 로딩 되지 않는 문제 해결하기

useEffect 안의 ClearInterval()실행 관련 질문

407

한광훈

작성한 질문수 10

0

안녕하세요. 먼저 좋은 강의 감사드립니다.

아래에서 useEffect() 안에서 받은 setInterval()의 retrun 값으로 받은 intervalId는 함수 Scope를 벗어나면 없어지는데, 다음에 들어온 상태에서

... else if(!isError && intervalId) clearInterval(intervalId)...

위 부분이 정상적으로 동작할 수 있나요?

함수 Scope에 상관없이 메모리가 존재하려면 useRef나 다른 방법을 사용하여 intervalid 변수가 살아 있도록 해야하지 않나요?

express nodejs react aws mongodb lambda

답변 1

0

김시훈 (도도소프트)

앗 지적 감사합니다!

 

말씀하신대로 스코프 문제가 있기 때문에 이 경우에는 다음과 같이 useRef를 이용하는게 좋아보입니다.

import React, { useState, useEffect } from "react";
import { useRef } from "react";

const Image = ({ imageUrl }) => {
  const [isError, setIsError] = useState(false);
  const [hashedUrl, setHashedUrl] = useState(imageUrl);
  const intervalIdRef = useRef();
  useEffect(() => {
    if (isError && !intervalIdRef.current) {
      intervalIdRef.current = setInterval(
        () => setHashedUrl(`${imageUrl}#${Date.now()}`),
        1000
      );
    } else if (!isError && intervalIdRef.current)
      clearInterval(intervalIdRef.current);
    else setHashedUrl(imageUrl);
    return () => clearInterval(intervalIdRef.current);
  }, [isError, setHashedUrl, imageUrl]);

  return (
    <img
      alt=""
      onError={() => setIsError(true)}
      onLoad={() => setIsError(false)}
      style={{ display: isError ? "none" : "block" }}
      src={hashedUrl}
    />
  );
};

export default Image;

Router.use 두번째 파라미터 ImageRouter : undefined 전달 오류

0

128

2

소스코드 요청

0

165

1

프록시 관련 질문

0

170

1

Presigned URL 사용시 데이터베이스 저장 시점

0

338

1

이미지 등록시 자동 등록 오류

0

222

1

강의에 사용된 코드 다운 받는 사이트 주소 있나요?

0

393

2

axios 이용해서 백엔드로 이미지 전송 중 새로고침

0

477

1

ImageList 컴포넌트에서 업로드 한 사진을 리스트에서 바로 보기 위해 이 방법도 괜찮나요??

0

386

1

이미지 처음 올릴 때만 나타나는 오류

0

258

1

es6 스타일로 Import 할때 동작하지 않습니다.

0

394

1

이미지 업로드시

0

368

1

node js를 이용하고 mysql에 이미지 경로 저장

2

1263

1

선생님 cloudFront를 사용하게되면 S3는 private으로 사용하는게 좋을까요

0

546

1

선생님 aws-sdk 모듈을 찾을 수 없다고 합니다.

0

668

1

new aws.S3 version 확인

2

509

1

react-router-dom v6 useHistory 이슈

7

641

0

람다에서 시간 초과 에러가 뜹니다!

0

320

1

첫 로드시 동일한 이미지 두번호출

2

497

1

이미지 업로드 시 배열로

2

532

1

Promise.all에 대한 질문

0

431

1

세션에 관한 질문이 있습니다.

0

436

1

Promise.all관련 질문 ("여러 이미지 미리보기" 중...)

0

314

1

cdn 주소

0

513

1

특정 user 페이지 가져오기 질문있습니다.

0

299

1