面试题答案
一键面试思路
- 利用React Router提供的路由组件和生命周期方法。
- 创建一个高阶组件(HOC)或者自定义组件来作为路由守卫。
- 在该组件中检查用户登录状态,根据状态决定是否允许进入特定路由。
关键代码步骤
- 安装React Router:
npm install react-router-dom
- 创建路由守卫组件:
import React from'react'; import { Navigate, Outlet } from'react-router-dom'; import { useAuth } from './AuthContext'; // 假设从上下文获取登录状态 const RequireAuth = () => { const { isLoggedIn } = useAuth(); return isLoggedIn? <Outlet /> : <Navigate to="/login" />; }; export default RequireAuth;
- 在路由中使用路由守卫:
import React from'react'; import { BrowserRouter as Router, Routes, Route } from'react-router-dom'; import RequireAuth from './RequireAuth'; import Home from './Home'; import Login from './Login'; const App = () => { return ( <Router> <Routes> <Route path="/login" element={<Login />} /> <Route path="/" element={<RequireAuth />}> <Route path="/home" element={<Home />} /> </Route> </Routes> </Router> ); }; export default App;
上述代码中,RequireAuth
组件作为路由守卫,通过useAuth
钩子获取登录状态。如果用户已登录,Outlet
组件会渲染子路由;否则,Navigate
组件会将用户重定向到登录页面。在路由配置中,将需要保护的路由放在RequireAuth
组件内部。