我正在try 在REACTIV18中设置路由,将某些页面限制为只允许登录的用户访问.我似乎不能让return
语句中的函数工作.Login
和Register
工作正常.如果我将另一个组件放在函数之外,与Login
和Register
相同的级别,它也可以很好地工作.但是当页面加载时,它应该达到localhost/
,看到没有令牌,然后路由到/login
.现在,它只停留在localhost/
,并显示一个空白页面.控制台中的警告是:"没有与位置匹配的路由‘/’".这是正确的,因为路径为"/"的组件在AppViews
中,应该受到限制.但它不会将用户移动到‘/登录’.为什么不行?我遗漏了什么?
export const MyApp = () => {
const [token, setTokenState] = useState(localStorage.getItem('token'))
const setToken = (newToken) => {
localStorage.setItem('token', newToken)
setTokenState(newToken)
}
return (
<>
<Routes>
{ <Route render={() => {
if (localStorage.getItem("app_token")) {
return <>
<Route>
<AppViews />
</Route>
</>
} else {
return <Navigate to="/login" />
}
}} />
}
<Route path="/login" element={<Login />} />
<Route path="/register" element={<Register />} />
</Routes>
</>
)
}
export default MyApp;