我写了一个函数来改变用户的密码,我想当响应是true
时,把用户导航到登录页面,但是我的登录路径不匹配,而是呈现了NoMatch路径。当我重新加载页面时,我的登录路径呈现了,为什么?
这是我的ChangeUserPassword函数:
import { Navigate, useNavigate } from "react-router-dom";
const navigate = useNavigate();
const ChangeUserPassword =()=>{ // it's a simple Function not ***React Component ***
// DO SOmthing
if (Response){
navigate("/Login", { replace: true });
}
}
这是我的路线:
import Loading from "./Component/Loading";
const Main = () => {
const { token } = useAuthState();
return (
<>
<BrowserRouter>
<Routes>
<Route
path="/"
element={
<Suspense fallback={<Loading />}>{<MainPage />}</Suspense>
}
/>
<Route
path="/Login"
element={
<Suspense fallback={<Loading />}>
{!token ? <LoginStep1 /> : <Navigate replace to={"/"} />}
</Suspense>
}
/>
<Route
path="*"
element={
<Suspense fallback={<Loading />}>
<NoMatch />
</Suspense>
}
/>
</Routes>
</BrowserRouter>
</>
);
我想当用户更改他们的密码,被重定向到登录页面,但我的路由器不匹配.我该如何解决这个问题?
2条答案
按热度按时间pw136qt21#
尝试使用useNavigate钩子,如下所示
vuv7lop32#
要解决此问题,您应该将navigate(0)添加到ChangeUserPassWord()原因此问题是PathName在您的PathName的位置未更改,需要重新呈现,navigate(0)重新呈现您的当前页面。这是GitHub中的一个未决问题,还没有人知道如何在不重新呈现的情况下更改路径名。useNavigate hook causes waste rendering