React Native - ожидание рендера Firestore до завершения запроса - PullRequest
0 голосов
/ 11 ноября 2018

Я создаю приложение, используя реакционную систему и firestore.Вот кусок моего кода;

getData(mat){
 let count = 0;
 let val;
db.collection("Yemek").doc("Materials").collection(mat).get().then((querySnapshot) => {
  querySnapshot.forEach((doc) => {
      count++;
      val = doc.data().value;
      matKey = mat+count.toString();
      this.state.array.push([
        meal=mat,  value=val, status=false, key=matKey 
      ]);
  });
}).catch(err => {
  console.log('Error getting documents', err);
  return false;
  });
}
componentWillMount(){
 this.getData('vegetables');
 this.getData('legumes');
 this.getData('meat');
 this.getData('milk');
 this.getData('others');
}
render() {
return (//Render components)}

Я рендеринг компонентов с массивом, находящимся в состоянии.Но это возвращает ноль, потому что компоненты рендеринга приложения до завершения запроса.Я искал вчера.Я думаю, что я должен использовать обещания, но я не понял этого.Не могли бы вы помочь мне?

1 Ответ

0 голосов
/ 04 декабря 2018

Обычно рекомендуемый способ сделать что-то подобное - использовать состояние. В своем конструкторе инициализируйте свое состояние и установите логическое значение (например, «загрузка»), чтобы указать, что ваша страница загружается. После завершения загрузки установите значение загрузки на false, чтобы указать, что загрузка завершена. Это приведет к повторной визуализации вашего класса.

Для согласованности вы можете использовать условный рендеринг; если страница все еще загружается, покажите индикатор активности, иначе покажите содержимое вашей страницы. Оба эти элемента хорошо представлены с примерами здесь и в других местах.

...