我想将sessionStorage添加到我的Next.js / React / Redux项目中,以便在刷新页面时摆脱状态损失。
我使用jwt来验证我的api客户端并将jwt放入sessionStorage登录工作正常,但我好奇我在哪里检查sessionStorage中是否已经有一个jwt。
我的第一个想法是将它添加到我的reducer中的createState函数中,我通常在启动时定义一个空的sessionToken
const createState = () => ({
// ...
sessionToken: sessionStorage.token || "",
// ...
})
const gui = (state = createState(), action) => {
switch(action.type) {
// ...
}
}
但是我得到了
sessionStorage is not defined
。
使用
sessionToken: window.sessionStorage || "",
结果是
window is not defined
错误
好的,我想,我已经阅读了关于在函数in this question中包装sessionStorage的内容
所以我在一个不同的文件中添加了一些函数并将它们导入我的Reducer中,这些函数运行良好 至少对于进口。
export const globalStorage = () => {(insNode = typeof process === 'object' && process.versions && !!process.versions.node) ? global : window}
export const setSessionStorage = (key, value) => sessionStorage.setItem(key, value)
export const getSessionStorage = (key) => sessionStorage.getItem(key)
export const delSessionStorage = (key) => sessionStorage.removeItem(key)
但是当我试图在我的reducer中调用这些函数时
sessionToken: globalStorage()['sessionStorage'] || "",
我得到了:
(0 , _store.globalStorage) is not a function
遵循此Tutorial
我第一次尝试直接在我的createState函数中访问sessionStorage应该可以正常工作,但它没有。\ n。
我错过了什么? :/
任何帮助表示赞赏,并提前感谢,
BigZ