Сбой сети в простом компоненте - PullRequest
0 голосов
/ 19 сентября 2019

мой метод извлечения не работает, как ожидалось.Он зацикливается до тех пор, пока в браузере не произойдет сбой

приложение, которое я создаю, представляет собой список фильмов.источником является TMDB Api

, API.getMoviesFromApi () прекрасно работает как обещание в компоненте с состоянием.

ниже - простой компонент.не удается

import React, { useContext, useState } from 'react';
import { SearchBar } from 'react-native-elements';
import SearchContext  from '../../lib/SearchContext'
import * as API from '../../services/API'

const SearchComponent = () => {
    const { setResults } = useContext(SearchContext)
    const [ value, setValue ] = useState('')
    fetch = () => {
        console.log(value)
        API.getMoviesFromApi(value).then(movies => {
            //console.log(movies)
           // setResults(movies)
           // this.setState({ loading: false })
        })
    }
    return( <SearchBar placeholder="Type Here..."
                        value={value}
                        onChangeText={(e) => {  
                            setValue(e)
                            fetch(e)
                        }}  />)
}

export default SearchComponent;  

это место для вызова API

import constants from '../config/constants';


export async function getMoviesFromApi(input) {
    const URL = `${constants.API_URL}?api_key=${constants.API_KEY}&query=${input}`
    try {
        let response = await fetch(
            URL,
          );
        if (!response.ok) { return false }

      let responseJson = await response.json();
      console.error(responseJson);
      console.error(responseJson.results);
      return responseJson.results
    } catch (error) {
      console.error(error);
    }
  }

export const getMovies = input => {
    return new Promise((resolve, reject) => {

        console.log(URL)
        fetch(URL)
            .then(response => {
                if (!response.ok) { return false }
                console.log(response.json())
                return response.json()
            }).then(data => {    
                resolve(data.results)
            }).catch(e => {
                reject(e)
            })
    })
}

export const getMovie = id => {
    return new Promise((resolve, reject) => {
        const URL = `https://api.themoviedb.org/3/movie/${id}?api_key=${constants.API_KEY}`
        fetch(URL)
            .then(response => {
                if (!response.ok) { return false }
                console.log(response.json())
               // return response.json()
            }).then(data => {
                resolve(data)
            }).catch(e => {
                reject(e)
            })
    })

}

так происходит каждый раз, когда я пытаюсь получить ответ после вызова API.Что такое блок?https://media.giphy.com/media/SsgP16NiNuUqJ5NRlF/giphy.gif

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