Я изучал реакцию на нативном языке и разрабатывал простое приложение, показывающее несколько ресторанов в определенном месте на основе ключевого слова, заданного с помощью Google Places API в axios. Мне удалось получить токен next_page_token, но я не знаю, как использовать этот маркер страницы для повторного запуска извлечения. Пожалуйста, помогите.
Мой SearchScreen.js
import React, { useState } from 'react';
import {View, Text, StyleSheet} from 'react-native';
import SearchBar from '../components/SearchBar';
import useResults from '../hooks/useResults';
const SearchScreen = () => {
const [term, setTerm] = useState('');
const [searchApi, results, errorMessage, pageToken] = useResults();
return (
<View>
<SearchBar
term={term}
onTermChange={setTerm}
onTermSubmit={() => searchApi(term)}
/>
{errorMessage ? <Text>{errorMessage}</Text> : null}
<Text>We have found {results.length} results</Text>
</View>
);
};
const styles=StyleSheet.create({});
export default SearchScreen;
useResults.js
import { useEffect , useState } from 'react';
import GooglePlaces from '../api/GooglePlaces';
export default () => {
const [results, setResults] = useState([]);
const [errorMessage, setErrorMessage] = useState('');
const [pageToken, setPageToken] = useState('');
const searchApi = async (searchTerm) => {
try {
const response = await GooglePlaces.get('/json', {
params: {
location: '-33.8670522,151.1957362',
radius: 1500,
type: 'restaurant',
keyword: searchTerm,
key: 'MY_KEY_GOES_HERE',
pagetoken: pageToken
}
});
if (response.data.status == "OK") {
setResults(response.data.results);
setPageToken(response.data.next_page_token);
console.log(results);
if(pageToken!='') {
console.log("Next Page");
}
}
} catch (err) {
setErrorMessage('Something went wrong');
}
};
useEffect(() => {
console.log("Hi There");
searchApi('pasta');
}, []);
return [searchApi, results, errorMessage, pageToken];
};
Я могувернуть функцию pageToken. Поскольку Google Places API возвращает 60 результатов, мне нужно использовать этот pageToken для запуска API еще два раза, чтобы я мог получить максимальные результаты. Теперь я получаю только максимум 20 результатов.