В качестве упражнения я пишу простое (а также как можно более безпамятное) приложение на стороне клиента (в реактиве), отображающее сообщения в фиде одного объекта Facebook. Приложение получает свои данные из API графиков Google.Как узнать Я на последней странице при обращении к API-интерфейсу Facebook Graph?
Я использую Facebook JS SDK для запроса следующего URL: /<entity-id>/feed?limit=20&fields=...
У меня есть простые кнопки подкачки («предыдущий» & «следующий»), которые запрашивают пейджинговая URL-адрес, полученными в ответ API в response.paging.previous
и response.paging.next
соответственно.
Проблема Я не знаю, как узнать, если я на последней странице, чтобы отключить «следующую» кнопку правильно.
Есть несколько вещей, которые я пробовал, однако я до сих пор не получаю то, что хочу.
Вариант 1: Разрешить кнопку "Далее", пока нет никаких данных в ответ
Кнопка получает отключается при
response.data.length == 0
.paging
Объект содержитnext
URL-адрес, даже если данных больше не будет, поэтому я не могу проверить его, прежде чем перейти на страницу без данных.Проблема заключается в том, что, когда я добираюсь до этой страницы, нет также
paging
объекта, включенного вresponse
. В результате я не могу использовать «предыдущую» кнопку, чтобы вернуться на последнюю страницу с данными.
Вариант 2: Разрешить кнопку "Далее", пока я не получаю меньше данных, чем предел запросов
Кнопка получает отключается при
response.data.length < limit
.Хорошо подходит для коллекций, где
data.length % limit != 0
.Проблема в другом случае, например, когда в коллекции 40 объектов, и я на второй странице с лимитом 20, я все еще могу нажать «Далее», но затем я нахожусь на странице с нет больше объектов, как уже упоминалось в варианте 1.
Вариант 3: Помните URL последнего запроса
Последний запрос URL хранится в переменной, а «предыдущий» кнопка работает даже в если нет
paging
данные вresponse
.Решает только проблему «вы не можете вернуться».
Не решает проблему с правильным отключением кнопки «Далее».По-прежнему можно нажать «дальше» на последней странице с данными и перейти на пустую страницу без данных.
Так что вопрос:
Как я могу узнать, что я уже получил последние пункты в коллекции и нажмите кнопку «Далее» Я денусь утратившим пустая страница?
Это кажется странным мне, что Graph API предоставляет
response.paging
URL, даже на начало/конец коллекции.Например, если я кормить 10 сообщений и я запрашиваю с
limit 20
, я получаюresponse
сdata: Array[10]
иpaging
объекта с действительной URL, как вpaging.previous
иpaging.next
, даже если нет «предыдущие» и не «ряда» данные.Запрос этих URL-адрес результатов в
response
с пустымdata
массива и с неpaging
объекта, поэтому нет никакого способа, чтобы вернуться в безгосударственном применении.Не было бы лучше, если бы не было
paging.previous
в начале коллекции и нетpaging.next
в конце коллекции?