react native 에서 firebase firestore 가져올때 getdownload url이 들어가질않아요

아래는 소스인데요, getdownloadURL 에서 url 값을 uri라는 변수에 넣고 이걸 밑에 todos 에 push 하고 싶은데요, 문제는 url은 제대로 값이 있는데 uri에 계속 아무값도 안들어가네요…

react-native 초보단계라 가르침이 필요합니다 선생님들. 감사합니당

querySnapshot.forEach((doc) => {
const { ID, TIME,STAR,PHOTO,UID,COMMENT } = doc.data();
const ref = firebase.storage().ref(PHOTO);

        ref.getDownloadURL().then(url => {
          this.setState({ uri: url })
         });
        
       // console.log(PHOTO);
        todos.push({
          key: doc.id,
          doc, // DocumentSnapshot
          ID,
          TIME,
          STAR,
          PHOTO,
          UID,
          COMMENT
        });
        

      });
      this.setState({ 
        todos
        
     });

todos.push 안에 uri가 없는데요… react-devtools를 크롬 익스텐션으로 까셔서 state안에 제대로 들어갔나 확인해 보시기 바랍니다 :slight_smile:

1 Like

혹시 동기화 문제 이신가?!

setState에 uri state 값은 바로 값이 할당되지 않습니다: 구글링하시면 해당내용 블로그 글로 많이 있습니다.

아니면, then 함수에 wait가 안되어서? 이것도 async await 구글링하면 나옵니다. setstate 가 push한다음에 일어난거죠(비동기쿼리 때문에)

1 Like

감사합니다 비동기 문제가 맞습니다. 제가 기초를 모르고 접근했네요