在访问路由时重定向到另一条路由
Redirect to another route when accessing a route in react
我有一个用例,我想在有人点击“/”路由时从“/”路由重定向到 /login。为了更清楚起见,我有一个指向 'app.web.com/login' 作为登录页面的应用程序。当有人试图访问 'app.web.com' 时,它应该重定向到 'app.web.com/login'。我正在使用 React 路由器版本 6,这是我尝试过的。
<Routes>
<Route path='/'>
<Navigate to="/auth/login" />
</Route>
<Route path='auth' element={<AuthView />}>
<Route path='login' element={<LoginView />} />
</Route>
<Route path='*' element={<NotFoundView />} />
</Routes>
但是没有达到预期的效果。我几乎只是在做出反应,所以我相信有一种简单的方法可以做到这一点。
如果我理解正确,那么如果用户不是 logged in
.
,您希望将用户重定向到 login
页面
所以你可以做的是,而不是尝试使用 route
来做,你可以从当用户转到 /
.[=18= 时呈现的组件来做]
您可以检查 useEffect hook
如果用户存在则转到 /
否则转到 /login
。
使用下面的示例:
useEffect(() => {
if(!user) {
navigate('/')
}
}, [user])
你可以做的是制作一个小组件,在“/”路由上呈现,将你重定向到登录页面。
您可以为此使用 useHistory 挂钩。
下面是一个类似组件的示例。
import React, { useEffect } from 'react';
import { useHistory } from 'react-router-dom';
export const RedirectToLogin: React.FC = () => {
const history = useHistory();
useEffect(() => {
history.push('/auth/login');
});
return null;
};
您的路由器组件如下所示:
<Routes>
<Route path='/' element={<RedirectToLogin />} />
<Route path='auth' element={<AuthView />}>
<Route path='login' element={<LoginView />} />
</Route>
<Route path='*' element={<NotFoundView />} />
</Routes
我有一个用例,我想在有人点击“/”路由时从“/”路由重定向到 /login。为了更清楚起见,我有一个指向 'app.web.com/login' 作为登录页面的应用程序。当有人试图访问 'app.web.com' 时,它应该重定向到 'app.web.com/login'。我正在使用 React 路由器版本 6,这是我尝试过的。
<Routes>
<Route path='/'>
<Navigate to="/auth/login" />
</Route>
<Route path='auth' element={<AuthView />}>
<Route path='login' element={<LoginView />} />
</Route>
<Route path='*' element={<NotFoundView />} />
</Routes>
但是没有达到预期的效果。我几乎只是在做出反应,所以我相信有一种简单的方法可以做到这一点。
如果我理解正确,那么如果用户不是 logged in
.
login
页面
所以你可以做的是,而不是尝试使用 route
来做,你可以从当用户转到 /
.[=18= 时呈现的组件来做]
您可以检查 useEffect hook
如果用户存在则转到 /
否则转到 /login
。
使用下面的示例:
useEffect(() => {
if(!user) {
navigate('/')
}
}, [user])
你可以做的是制作一个小组件,在“/”路由上呈现,将你重定向到登录页面。
您可以为此使用 useHistory 挂钩。
下面是一个类似组件的示例。
import React, { useEffect } from 'react';
import { useHistory } from 'react-router-dom';
export const RedirectToLogin: React.FC = () => {
const history = useHistory();
useEffect(() => {
history.push('/auth/login');
});
return null;
};
您的路由器组件如下所示:
<Routes>
<Route path='/' element={<RedirectToLogin />} />
<Route path='auth' element={<AuthView />}>
<Route path='login' element={<LoginView />} />
</Route>
<Route path='*' element={<NotFoundView />} />
</Routes