使用react-auth-kit登出时出现React最大更新深度超出错误
解决React-auth-kit登出时的「Maximum update depth exceeded」错误
可能的原因及解决方案
1. 确保应用被AuthProvider正确包裹
react-auth-kit必须用AuthProvider包裹整个应用,否则认证状态更新会引发异常的组件渲染循环。检查你的根组件(如App.js)是否正确配置:
import { AuthProvider } from 'react-auth-kit'; import AppRoutes from './AppRoutes'; function App() { return ( <AuthProvider authType={'cookie'} authName={'_auth'} cookieDomain={window.location.hostname} cookieSecure={window.location.protocol === 'https:'} > <AppRoutes /> </AuthProvider> ); } export default App;
2. 手动控制登出后的导航逻辑
默认情况下useSignOut会自动跳转登录页,和react-router-dom的路由切换逻辑结合时可能触发重复状态更新。可以禁用自动导航,手动控制跳转:
修改Logout组件:
import React from 'react' import { useSignOut } from 'react-auth-kit' import { useNavigate } from 'react-router-dom' export default function Logout() { const signOut = useSignOut() const navigate = useNavigate() const handleLogout = () => { // 禁用自动导航 signOut({ navigate: false }) // 手动跳转到登录页 navigate('/login') } return ( <> <span onClick={handleLogout}>Sign Out</span> </> ) }
3. 确认组件渲染范围
确保Logout组件仅在用户已认证时渲染(比如在RequireAuth包裹的组件内部)。你的当前路由已将Header放在RequireAuth内,这部分逻辑正确,若其他地方也渲染了Logout组件,需排查调整。
内容的提问来源于stack exchange,提问作者salman
相关产品推荐
相关产品推荐

