簡體   English   中英

<Navigate/>react-router-dom v6

[英]<Navigate/> react-router-dom v6

當條件錯誤時,我無法理解如何進行強制重定向。

{
                    login ? (
                            <Routes>
                                <Route path='/profile' element={<Profile/>}/>
                                <Route path='/chat' element={<Chat/>}/>
                                <Route path='/' element={<UserList/>}/>
                            </Routes>
                        )
                        :
                        (
                            <Routes>
                                <Route path='/login' element={<Login/>}/>
                                <Navigate to='/login' state={{from: location}}/>
                            </Routes>
                        )
                }

怎么了?

您正在根據登錄狀態創建一組不同的路由。 那是錯誤的。 你的路線不應該被限制。 相反,您想要的是將用戶從他不允許訪問的頁面重定向(V6 中的術語是導航)到他所在的頁面。 同樣,如果請求的路由不存在,這將很難實現。

以下是您可以解決的方法:

<Routes>
  <Route path="/" element={<PublicPage />} />
  <Route path="/login" element={<LoginPage />} />
  <Route
    path="/protected"
    element={
      <RequireAuth>
        <ProtectedPage />
      </RequireAuth>
    }
  />
</Routes>

和:

const RequireAuth = () => {
  let auth = useAuth();

  if (!auth.user) {
    return <Navigate to="/login" />;
  }

  return children;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM