0

В качестве упражнения я пишу простое (а также как можно более безпамятное) приложение на стороне клиента (в реактиве), отображающее сообщения в фиде одного объекта 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 в конце коллекции?

ответ

0

По графику API На основе курсора. https://developers.facebook.com/docs/graph-api/using-graph-api#cursors

Существует не соответствующий способ сделать это, как вы хотите, из коробки. Вы должны управлять левыми и следующей кнопкой, отдельно от разбиения на страницы графика API. В качестве решения предварительно загрузите следующую страницу в дополнение к текущему.

Кроме того, сохранение предыдущего курсора является неправильной практикой: «Не хранить курсоры. Курсоры могут быстро стать недействительными, если элементы добавлены или удалены».

 Смежные вопросы

  • Нет связанных вопросов^_^