如何解决不确定在React中将检查JWT的代码放在哪里
我正在关注一个React教程,该教程将代码放置在主要App()组件之外(可能赋予其全局范围),而不仅仅是将其放入其中。它还可以直接访问商店,而不使用 useDispatch 挂钩。我尝试使用钩子,但随后出现错误消息:
-
您不能在其他情况下挂入钩子,因为每次都必须(无条件地)在同一时间运行
-
挂钩只能在函数内部运行
这是有问题的代码:
import store from "./redux/store"
const token = localStorage.FBIdToken
if (token) {
const decodedToken = jwtDecode(token)
if (decodedToken.exp * 1000 < Date.now()) {
store.dispatch(logoutUser()) //deletes user's JWT token from
//localStorage and sets redux
//state.UI.Authenticated to false
window.location.href = "./login"
} else {
store.dispatch({ type: SET_AUTHENTICATED }) //sets redux
//state.UI.authenticated
//to true
axios.defaults.headers.common["Authorization"] = token
store.dispatch(getUserData()) //just gets user from the database and
//sets the redux state.user to it's
//value
}
}
function App() {
return(){
//my app things
{
}
我的问题是我该如何以不同的方式设置格式,使其适合我的App()函数,并在可能的情况下使用钩子?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。