0
在這裏的例子 - https://react-router.now.sh/auth-workflow - 你已經登錄後(在地址欄或類似的東西鍵入地址)「登錄」路線仍然匹配。反應路由器V4 - MatchWhenAuthorized例如
是否有一個更優雅的解決這個問題除了建立像MatchWithAuthTestBefore,這將需要一對組件的渲染 - 一個授權時,一個在不?
在這裏的例子 - https://react-router.now.sh/auth-workflow - 你已經登錄後(在地址欄或類似的東西鍵入地址)「登錄」路線仍然匹配。反應路由器V4 - MatchWhenAuthorized例如
是否有一個更優雅的解決這個問題除了建立像MatchWithAuthTestBefore,這將需要一對組件的渲染 - 一個授權時,一個在不?
由於RRv4是所有有關組件,該解決方案是在一個組件來處理這一點。基本上在示例中列出,其中重定向該<MatchWhenAuthorized>
部件的相反,如果用戶已登錄。
const MatchWhenUnauthorized = ({ component: Component, ...rest }) => (
<Match {...rest} render={props => (
!fakeAuth.isAuthenticated ? (
<Component {...props}/>
) : (
<Redirect to={{ pathname: '/' }}/>
)
)}/>
)
這類似於你會與正常的路由/視圖配置(匹配/login
做什麼和在login
如果用戶已經通過身份驗證,您將重定向)。