作爲一項練習,我正在編寫簡單的(也是儘可能無狀態的)客戶端應用程序(在React中),在單個Facebook實體的Feed中顯示帖子。應用程序從Facebook Graph API獲取其數據。如何查詢我在查詢Facebook Graph API時的最後一頁?
我使用Facebook JS SDK來查詢以下URL:/<entity-id>/feed?limit=20&fields=...
我有簡單的分頁按鈕(「前一個」 &「下一個」),其查詢分別在API響應接收在response.paging.previous
和response.paging.next
尋呼網址。
問題是我不知道如何查看我是否在最後一頁上以正確禁用「下一步」按鈕。
有幾件事我嘗試過,但我仍然沒有得到我想要的。
方案1:讓點擊 「下一步」 直到有響應沒有更多的數據
按鈕被禁用時
response.data.length == 0
。paging
對象包含next
即使沒有更多的數據要接收,所以我不能檢查它在沒有數據的頁面之前檢查它。問題是,當我到達該頁面時,
response
中也沒有包含paging
對象。因此,我無法使用「上一個」按鈕返回數據的最後一頁。
選項2:允許點擊 「下一步」 直到我比查詢限制接收的數據較少
按鈕時
response.data.length < limit
被禁用。適用於收藏的地方
data.length % limit != 0
。問題是在相反的情況下,例如,當集合中有40個對象,並且我在第二個頁面上有極限20時,我仍然可以單擊「下一個」,但隨後我最終在頁面上沒有更多的對象,如選項提到1
方案3:記得去年請求URL
最後一個請求的URL被存儲到變量中,「上一個」按鈕,即使在工作當沒有的情況下數據在
response
。只解決「你不能回去」的問題。
無法正確禁用「下一步」按鈕來解決問題。仍然可以用數據在最後一頁上點擊「下一步」,然後進入沒有數據的空白頁面。
所以,問題是:
我如何才能知道,我已經在收集,並通過點擊收到的最後一個項目「下一個」我會爲無效空白頁?
即使在集合的開始/結束處,Graph API也提供了
response.paging
URL,這似乎很奇怪。例如,如果我已經養活了10帖,我有
limit 20
查詢,我收到response
與data: Array[10]
和兩個paging.previous
和paging.next
與有效的URLpaging
對象,即使沒有「以前」,並沒有「下一步」數據。查詢在
response
這些URL結果與空data
陣列和沒有paging
對象,所以我沒有辦法找回無國籍應用。如果收集開始時沒有
paging.previous
,收集結束時沒有paging.next
會不會更好?