inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

리펙토링 1 & 개인 사진 Infinite Scroll 적용하기

로그인 안했는데 isPublic에 따라 setMyImages를 하는 이유가 있나요?

185

현석오

작성한 질문수 53

0

client\src\context\ImageContext.js 에서

로그인이 안된 상태에서도 isPublic에 따라 

setMyImages를 하도록 되있는데 

로그인 안한 상태에서는 /images 요청만 날리 개인 사진 보기 버튼이 있지도 않은데 setMyImages는 의미가 없지 않나요?

  useEffect(() => {
    setImageLoading(true)
    axios
      .get(imageUrl)
      // .then((result) => setImages((prevData) => [...prevData, ...result.data]))
      .then((result) =>
        isPublic
          ? setImages((prevData) => [...prevData, ...result.data])
          : setMyImages((prevData) => [...prevData, ...result.data]),
      )
      .catch((err) => {
        console.error(err)
        setImageError(err)
      })
      .finally(() => setImageLoading(false))
  }, [imageUrl, isPublic])

  useEffect(() => {
    if (me) {
      setTimeout(() => {
        axios
          .get('/users/me/images')
          .then((result) => setMyImages(result.data))
          .catch((err) => console.error(err))
      }, 0)
    } else {
      setMyImages([])
      setIsPublic(true)
    }
  }, [me])

lambda nodejs mongodb express aws react

답변 1

0

김시훈 (도도소프트)

네 그렇게 생각되실 수도 있는데요. 해당 useEffect는 me가 변동될 때 발동 되요. 즉 로그인 하면서 undefined 였던 me가 set되죠. 근데 me가 변경되는 경우가 또 있습니다. 로그아웃 할 때에요. 로그아웃 하면 화면상으로 버튼을 숨겼다고 하더라도 메모리 상으로는 기존에 로그인 했던 유저의 개인 사진 정보들이 그대로 남나 있죠. 그래서 me가 없을 경우에는 해당 데이터를 초기화해주는게 맞아요. 메모리에 남는것도 문제이지만 서비스가 복잡해진다면 버튼 숨김처리와 같은 처리를 여러군데에서 해야될 수도 있는데 이 때 실수로 처리를 안한다면 모두 노출이 되겠죠. 그래서 어떻게 보여질지에 대한 처리도 제대로 해주셔야 하지만 그와 별도로 데이터도 유저 정보/권한에 따라 잘 관리해주셔야 합니다.

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

0

127

2

소스코드 요청

0

164

1

프록시 관련 질문

0

169

1

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

0

335

1

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

0

218

1

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

0

390

2

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

0

476

1

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

0

386

1

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

0

257

1

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

0

393

1

이미지 업로드시

0

367

1

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

2

1263

1

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

0

545

1

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

0

667

1

new aws.S3 version 확인

2

509

1

react-router-dom v6 useHistory 이슈

7

641

0

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

0

318

1

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

2

493

1

이미지 업로드 시 배열로

2

532

1

Promise.all에 대한 질문

0

431

1

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

0

434

1

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

0

312

1

cdn 주소

0

510

1

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

0

298

1