Я только начинаю изучать React Native, и это мой первый проект, в котором я пытаюсь получить фильмы из API OMDB через json.
Дело в том, что я хочу получить все фильмы из базы данных, чтобы упростить это, и моя проблема в том, что у меня нет идеи, как я могу получить все фильмы, я создал api, который извлекает только фильмы, связанные с "звездой", потому что я использую " star "в качестве типа поиска в этой ссылке api, размещенной ниже, так что есть ли кто-нибудь, кто может помочь мне получить все фильмы? Спасибо..
ССЫЛКА НА API Я ИСПОЛЬЗУЮ ДЛЯ ПОЛУЧЕНИЯ ИЗ OMDBAPI: http://www.omdbapi.com/?s=star&apikey=480344f1&r=json
Я также прикрепил файлы, как я получил, и все работает нормально ..
App.js
import React from 'react';
import DetailsScreen from './screens/DetailsScreen'
import SearchScreen from './screens/SearchScreen';
import { createStackNavigator } from 'react-navigation';
const StackNavigator = createStackNavigator({
SearchStack: SearchScreen,
InfoStack: DetailsScreen,
},
{
initialRouteName: 'SearchStack',
},
);
export default class App extends React.Component {
render() {
return (
<StackNavigator />
);
}
}
Api.js
export const fetchMovies = async () => {
const response = await
fetch('http://www.omdbapi.com/?s=star&apikey=480344f1&r=json')
const result = await response.json()
return result
}
SearchScreen.js
export default class SearchScreen extends React.Component {
static navigationOptions = {
headerTitle: 'Home'
}
constructor(props) {
super(props);
this.state = {
isLoading: true,
search: '',
movies: [],
}
}
/*componentDidMount() {
this.getMovies()
} */
getMovies = async (text) => {
const result = await fetchMovies(text)
this.setState({
movies: result.Search,
});
}
renderItem = item => {
console.info('We are Rendering ...' + item);
return (
<TouchableOpacity
style = {{ alignItems: 'center', flexDirection: 'row', padding: 10,}}
onPress = {() => { this.props.navigation.navigate('InfoStack') }}>
<Image style = {{ height: 50, width: 50, justifyContent: 'center' }} source = {{ uri: item.item.Poster }} />
<View style = {{ flexDirection: "column", marginLeft: 12,}}>
<Text style = {{ fontSize: 14, fontWeight: 'bold', justifyContent: 'center' }}>{item.item.Title}</Text>
<Text style = {{ fontSize: 14, justifyContent: 'center' }}>{item.item.imdbID}</Text>
</View>
</TouchableOpacity>
);
}
separateItem = () => {
return (
<View style = {{ height: 1, width: '100%', backgroundColor: 'black' }}>
</View>
);
}
render() {
console.info("Fetched Movies in backend" + this.state.movies);
return (
<View style = {styles.searchBox}>
<SearchBar
lightTheme
placeholder = "Search Here"
onChangeText = {text => this.getMovies(text)} />
<View style = {styles.container}>
<FlatList
data = {this.state.movies}
renderItem = {this.renderItem}
keyExtractor = {(item, index) => index}
ItemSeparatorComponent = {this.separateItem}
/>
</View>
</View>
);
}
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Привет, парень. Я только что получил ответ на эту проблему от своего старшего брата.
Это так просто, что я просто изменяю. Я просто создаю параметр в моей функции fetchMovies под названием "searchMovie" и передаю его по ссылке api, и все, когда я запускаю проект и ищу любое слово, он показывает мне результаты, соответственно, мой искомый текст имеет посмотрите на код ниже. Спасибо....!
Api.js
export const fetchMovies = async (searchMovie) => {
const response = await
fetch('http://www.omdbapi.com/?s='+ searchMovie +'&apikey=480344f1&r=json')
const result = await response.json()
return result
}