从Azure AD成功登录后,我正在尝试导航到仪表板页面。但是,只有地址栏值发生了更改,实际页面不会出现。
这是我的代码片段。
import { useNavigate } from 'react-router-dom';
import { useMsal, useIsAuthenticated } from "@azure/msal-react";
const { instance } = useMsal();
const navigate = useNavigate()
const onSubmit = async () => {
try {
const response = await instance.loginPopup(loginRequest);
if(response){
navigate('dashboard/app')
}
} catch (error) {
console.error(error);
}
};
地址栏只更改为"仪表板/应用程序",页面不会出现。
我也尝试过删除async,但是没有成功。
请帮忙。。。
我需要导航到实际页面。
useNavigate
钩子(像所有React钩子一样(只能在React组件内部使用。
如果没有这些,就无法连接到React生命周期方法中。
您还需要确保这个钩子连接到的任何组件都是BrowserRouter
组件的child
,因为它需要作为Provider
来工作。
即,如果您有以下内容:
const App: () => (
<>
<AddressBar />
<BrowserRouter>
Pages and Routes and Stuff...
</BrowserRouter>
</>
)
如果您尝试在AddressBar
组件中调用useNavigate
,它将不起作用。
相反,你必须向上移动BrowserRouter
来包围AddressBar
组件,如下所示:
const App: () => (
<BrowserRouter>
<AddressBar />
<>Pages and Routes and Stuff...</>
</BrowserRouter>
)
您还需要确保'dashboard/app'
路由是有效的。
请检查路由'dashboard/ap'是否有效,并且您没有丢失文件夹结构。请确保您是从反应组件内部调用它,如下所示:https://reach.tech/router/api/useNavigate