Данные из firebase не загружаются один раз в приложение-носитель - PullRequest
0 голосов
/ 31 января 2020

Я создаю реактивное приложение с машинописным шрифтом, которое имеет три нижние вкладки.

Проблема в том, что при переходе на другую вкладку данные из базы данных не загружаются один раз.

import React, {useState, useEffect} from 'react';
import {NavigationParams} from 'react-navigation';
import ExplorePresenter from './ExplorePresenter';
import getAllMovies from '../../../api/Movie/getAllMovies';

interface Props {
  navigation: NavigationParams;
}

function ExploreContainer({navigation}: Props) {
  const [loading, setLoading] = useState(true);
  let allMovies: any;

  async function preload() {
    try {
      console.log('entered');
      allMovies = await getAllMovies();
      setLoading(true);
    } catch (error) {
      console.error(error);
    } finally {
      console.log(allMovies);
      setLoading(false);
    }
  }

  useEffect(() => {
    preload();
  }, []);

  return <ExplorePresenter loading={loading} />;
}

export default ExploreContainer;

Как и в приведенном выше коде, если я перейду на вкладку исследования, функция предварительной загрузки вызовет API getAllMovies.

import firebase from 'firebase';

export default async function getAllMovies() {
  let movies;
  try {
    console.log('entered');
    movies = await firebase
      .database()
      .ref('movies')
      .once('value')
      .then(snapshot => snapshot.val())
      .then(res => Object.values(res));
  } catch (error) {
    console.error(error);
  } finally {
    console.log('All Movies Loaded Successfully.');
    return movies;
  }
}

После печати двух консолей (одна в предзагрузке, другая в getAllMovies ), он застрял, как показано ниже.

Запуск "сцены" с {"rootTag": 81, "initialProps": {}}

setUpDeveloperTools. js: 73 введено

setUpDeveloperTools. js: введено 73

В этом состоянии, если я снова нажму на вкладку исследования, теперь данные загружены и экран будет изменен на «Исследование готово».

Запуск «сцены» с {" rootTag ": 91," initialProps ": {}}

setUpDeveloperTools. js: 73 введено

setUpDeveloperTools. js: 73 введено

setUpDeveloperTools. js: 73 SocketRocket: в режиме отладки. Разрешение подключения к любому root cert

setUpDeveloperTools. js: 73 Все фильмы успешно загружены.

setUpDeveloperTools. js: 73 (48) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, { …}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…} , {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, { …}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…} , {…}, {…}]

Если я не нажму еще одну вкладку, приложение не загрузит данные.

Что мне здесь не хватало?

Я ценю чтение моей проблемы.

Любая помощь будет благодарна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...