在redux createState中读取SessionStorage

时间:2017-07-26 10:12:23

标签: reactjs redux jwt sessionstorage

我想将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

0 个答案:

没有答案