我正在做一个使用react-token-auth的项目,它是从一个顶级函数配置和导出的,我唯一缺少的是如何获得用户名,电子邮件等。存储到redux中,以便在整个应用程序中使用。我的方法是解码JWT令牌,并将其存储在onHydration钩子内。但我无法在react组件之外进行调度。正确的方法是什么?我的代码如下所示:
import { createAuthProvider } from 'react-token-auth';
import jwt_decode from 'jwt-decode'
import { useDispatch } from 'react-redux'
import { setName } from '../store/userSlice';
const dispatch = useDispatch()
export const { useAuth, authFetch, login, logout } =
createAuthProvider({
getAccessToken: session => session.access_token,
storage: localStorage,
onHydratation: (session) => {
const decoded = jwt_decode(session.access_token)
console.log('decoded', decoded)
dispatch(setName('decoded'))
},
onUpdateToken: (token) => fetch('/api/refresh', {
method: 'POST',
body: token.access_token
})
.then(r => {
r.json().then(a => {
if (!a.error) {
return a
}
else
logout()
})
})
});
谢谢!
1条答案
按热度按时间c86crjj01#
由于此代码在React外部运行,而不是在任何React组件中运行,因此您将无法使用
useDispatch
钩子或react-redux
中的任何内容。导入示例化的Reduxstore
对象,并直接向存储分派操作。示例: