reactjs 导航与React路由器不匹配

soat7uwm  于 2023-03-17  发布在  React
关注(0)|答案(2)|浏览(198)

我写了一个函数来改变用户的密码,我想当响应是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>
      

        </>
);

我想当用户更改他们的密码,被重定向到登录页面,但我的路由器不匹配.我该如何解决这个问题?

pw136qt2

pw136qt21#

尝试使用useNavigate钩子,如下所示

import { useNavigate } from 'react-router-dom';

const ChangeUserPassword = () => {
  const navigate = useNavigate();
  // DO SOMETHING
  if (Response) {
    navigate('/Login', { replace: true });
  }
};
vuv7lop3

vuv7lop32#

要解决此问题,您应该将navigate(0)添加到ChangeUserPassWord()原因此问题是PathName在您的PathName的位置未更改,需要重新呈现,navigate(0)重新呈现您的当前页面。这是GitHub中的一个未决问题,还没有人知道如何在不重新呈现的情况下更改路径名。useNavigate hook causes waste rendering

相关问题