yamoo9 / likelion-FEQA

질문/답변 — 프론트엔드 스쿨, 멋사
29 stars 9 forks source link

[LAB-11] url로 입력한 이미지가 출력되지 않습니다 #204

Closed kyuran6 closed 1 year ago

kyuran6 commented 1 year ago

질문 작성자

김진희

문제 상황

스크린샷 2023-03-22 시간: 22 58 09

스크린샷 2023-03-22 시간: 23 58 55

스크린샷 2023-03-22 시간: 22 58 23

프로젝트 저장소 URL

환경 정보

yamoo9 commented 1 year ago

문제 원인

컴포넌트 상태로 imgArr을 관리하지 않으면 React에 의해 리-렌더링 되지 않기 때문입니다. Firebase에서 가져온 이미지 URL은 비동기 요청/응답된 결과이기에 최초 렌더링 이후, React에 의해 다시 렌더링되어야 합니다.

const imgArr = []

문제 해결

컴포넌트 상태로 imgArr을 관리하면 React가 화면에 비동기 요청/응답 받은 이미지 URL을 정상적으로 출력합니다. 😃 그리고 응답 받는 이미지 개수가 너무 많아 10개로 줄였습니다. (참고: limit 함수 활용)

const [imgArr, setImgArr] = useState([]); 

useEffect(()=>{

  const getImages = async () =>{
    const q = query(
      collection(db, 'images'),
      where('user_uid',"==","EHSFq6SN4UfSAyGTw6UH"),
      limit(10)
    )
    const myImgList = await getDocs(q)

    const imageList = []
    myImgList.docs.map((doc)=>imageList.push(doc.data().url))

    setImgArr(imageList);
  }

  getImages()
},[imgArr])

컴포넌트 상태로 관리되면 이제 정상적으로 이미지가 화면에 렌더링 됩니다. 😀

kyuran6 commented 1 year ago

덕분에 해결했습니다 ㅎㅎㅎ 감사합니다 ^^