在ReactJS中存储用户ID以便所有组件都可以访问它的最佳方法是什么?
我已经研究过Redux和Context,但是它们仅仅存储一个ID似乎就大材小用了(或者我丢失了什么?)。我还查看了将ID存储在父组件(App)中,但是页面刷新丢失了ID:(。
答案 0 :(得分:3)
会话存储可能最适合您的需求
sessionStorage属性允许您访问当前来源的会话存储对象。 sessionStorage与localStorage类似;唯一的区别是,存储在localStorage中的数据没有到期时间,而存储在sessionStorage中的数据在页面会话结束时被清除。
https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage
然后您可以在需要时设置/获取ID
sessionStorage.setItem('userID', 'value');
const USER_ID = sessionStorage.getItem('userID');
但是,要在页面关闭后仍保留ID,则需要使用localStorage
只读的localStorage属性允许您访问文档来源的存储对象;存储的数据跨浏览器会话保存。 localStorage与sessionStorage相似,不同之处在于,尽管localStorage中存储的数据没有到期时间,但是页面会话结束时(即关闭页面时),存储在sessionStorage中的数据将被清除。
https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
localStorage.setItem('userID', 'value');
const USER_ID = localStorage.getItem('userID');
答案 1 :(得分:2)
如果您希望即使在关闭并重新打开浏览器后仍然可以使用数据,则 LocalStorage 是存储数据的合适位置;否则,只要打开浏览器, SessionStorage 就会保留您的数据。