我在連接到Firebase的React中構建了一個Web應用程序,該應用程序對用戶進行身份驗證並存儲發佈數據。網上似乎有很多關於使用Redux的文檔,但沒有關於堅持沒有它的狀態的文章。如何在本地存儲中保持狀態React without Redux?
當用戶刷新頁面時,<App />
的狀態將重置,因此我需要保留現有狀態/從Firebase中檢索它。一些文章建議使用本地存儲來存儲狀態。但考慮到最佳實踐,應該存儲在本地存儲?我的應用程序將所有狀態存儲在<App />
中,並將需要的狀態作爲道具傳遞給相關組件。
以下兩個示例假定用戶已經過身份驗證並剛剛刷新了其頁面。我們希望他們會被保存下來,我們這樣做:
例子#1:
- 應用加載和檢查最後存儲本地狀態的字符串化的對象本地存儲。將狀態設置爲該狀態或空狀態。
- 如果檢索並設置了
'state'
,則使用this.state['uid']
將狀態與Firebase(讀取)同步,然後再次更新本地存儲狀態。 - 每當用戶更新某些內容時,請更新狀態(更新Firebase)並更新本地存儲狀態。
- 當用戶註銷時,清除本地存儲
'state'
項目。
例子#2:
- 應用加載,並檢查一個UID本地存儲(其在認證期間設置),如果找到一個,使用與火力(讀取)同步狀態。
- 如果用戶重新加載頁面,則會從Firebase再次獲取數據。
- 當用戶註銷時,清除本地存儲
'uid'
項目。
在第一個例子中,我有效地保留了狀態的兩個副本。一個在React的State
中,另一個在瀏覽器的本地存儲中。如果用戶關閉窗口或刷新頁面。
我的問題是:最佳做法是?
或者,正在構建一個React應用程序,它需要在不使用Redux的情況下保持不同路線的用戶和狀態?
在沒有Redux的情況下學習React足夠了一條曲線,所以我試圖看看如果沒有它,我是否可以管理。