我從 API 每頁加載 10 個專案并將資料存盤在 redux 中假設我滾動 3 頁所以在我的 redux 中有 30 個元素 10 個元素在第 1 頁 10 在第 2 頁 10 在第 3 頁。現在我轉到下一個螢屏和再次回傳分頁螢屏。我的第 1 頁再次被呼叫,并且在 redux 中存在重復元素,因為第 1 頁元素已經在 redux 中,那么,我應該在進入下一個螢屏之前清除 redux 嗎?所以它再次從第 1 頁開始
uj5u.com熱心網友回復:
這取決于你想要什么,所以這里有兩種解決方案:
1-如果您想保留您的資料:
在你的 redux 代碼中添加分頁邏輯,這樣如果你到達第 3 頁,在 redux 中頁面將更新為 3,因此,當你回到螢屏時,頁面將從 3 繼續。
在 redux 中實作分頁邏輯的一個好方法是,每當您收到回應時,在 redux 狀態下為頁面值添加 1:
return {
...state,
data:[...state.data,...data]
page:data.length >0? state.page 1:state.page
}
2-如果您對不同的螢屏使用相同的 redux 或者您想清除它(我不推薦):
那么肯定你必須在離開螢屏時清除所有的 redux 資料。
如果您有任何問題,請告訴我,祝您好運!
uj5u.com熱心網友回復:
我建議你在 redux 中保留另一個鍵來跟蹤最后搜索的頁面索引。
- 最初,它會類似于
{lastSearchedPageIndex: 0, items: []}
. - 當您第一次打開頁面時,您會使用 page 引數為 0 進行 API 呼叫。您會從 API 獲得成功的回應,現在 redux 的狀態必須為
{lastSearchedPageIndex: 0, items: [SOME_ITEMS_OF_PAGE_0]}
。 - 當您向上滾動并到達頁面末尾時,您將進行另一個 API 呼叫。但是在這里您必須確保僅在之前未搜索過該頁面時才呼叫 API。條件應該是
if(currentPage > lastSearchedPageIndex) { MAKE_AN_API_CALL_WITH_PAGE_1 }
currentPage 是您要搜索的頁碼。一旦你得到回應,redux 狀態將是{lastSearchedPageIndex: 1, items:[SOME_ITEMS_FROM_PAGE0, SOME_ITEMS_FROM_PAGE1]}
. 這也將繼續用于剩余的頁面。
現在分頁已完成,您將移動到其他螢屏并回傳分頁螢屏。現在根據您的問題,redux 狀態是{lastSearchedPageIndex: 2, items:[SOME_ITEMS_FROM_PAGE0, SOME_ITEMS_FROM_PAGE1, SOME_ITEMS_FROM_PAGE2]}
. 您在頁面上并滾動到頁面 0 的末尾。由于我們已經撰寫了保護條件if(currentPage > lastSearchedPageIndex) { MAKE_AN_API_CALL_WITH_PAGE }
,因此當前頁面為 1,lastSearchedPageIndex 為 2。因此不會發生 API 呼叫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/531161.html
標籤:反应式
上一篇:將字串正確拆分為陣列陣列