Keycloak 页面在经过授权的keydepeat之后一次又一次地重新加载

Keycloak 页面在经过授权的keydepeat之后一次又一次地重新加载,keycloak,react-hooks,Keycloak,React Hooks,我遵循以下步骤() 使用KeyClope验证我的react应用程序。但是这里有一点不同,我使用react钩子来管理我的状态(下面的代码)。这会导致页面一次又一次重新加载。你知道吗 import React,{useState,useffect}来自“React”; 从“/UserInfo”导入用户信息; 从“/Logout”导入注销; 从“keydove js”导入keydove; //区别就在这里 功能安全(道具){ const[keydove,setkeydove]=useState(nul

我遵循以下步骤() 使用KeyClope验证我的react应用程序。但是这里有一点不同,我使用react钩子来管理我的状态(下面的代码)。这会导致页面一次又一次重新加载。你知道吗

import React,{useState,useffect}来自“React”;
从“/UserInfo”导入用户信息;
从“/Logout”导入注销;
从“keydove js”导入keydove;
//区别就在这里
功能安全(道具){
const[keydove,setkeydove]=useState(null);
const[IsAuthentied,SetAuthentication]=useState(false);
useffect(()=>{
constkeydove=keydove(“/keydove.json”);
init({onLoad:“需要登录”})。然后(authenticated=>{
设置密钥斗篷(密钥斗篷);
SetAuthentication(已认证);
});
});
如果(钥匙斗篷){
如果(未授权)
返回(

这是您的应用程序的密钥斗篷安全组件。您
除非你已经通过身份验证,否则不应该看到这个
钥匙斗篷。

); 否则返回无法验证!; } 返回初始化密钥斗篷。。。; } 出口违约担保;
您似乎忘记了包含
useffect
的依赖项。不设置它们会使
useffect
在每个渲染上运行。如果您只希望它运行一次,我们将依赖项设置为空数组

useEffect(() => {
    const keycloak = Keycloak("/keycloak.json");
    keycloak.init({ onLoad: "login-required" }).then(authenticated => {
        setKeycloak(keycloak);
        setAuthenciation(authenticated);
    });
}, []);

我认为您缺少第二个参数:
useffect(()=>{/*…*/},[])
只运行一次。很高兴它成功了!我加上它作为回答。