You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 23:31:29