мой метод извлечения не работает, как ожидалось.Он зацикливается до тех пор, пока в браузере не произойдет сбой
приложение, которое я создаю, представляет собой список фильмов.источником является 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