Как получить доступ к токену следующей страницы API Google Адресов в React Native с помощью Axios? - PullRequest
0 голосов
/ 13 октября 2019

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

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