【发布时间】:2021-12-25 06:30:30
【问题描述】:
我现在在我的应用中使用 React 17.0.2, react-router-dom 6.0.2。
我尝试使用 react Context 和 Route 在路由上添加身份验证。
在App.js 我可以从 AuthContext 中获得价值
...
const { authState, authReducer } = useContext(AuthContext);
<Routes>
<Route element={PrivateRoute}>
<Route path="/dashboard/*" element={<MainLayout />} />
</Route>
<Route>
<Route path="/auth/*" element={<EmptyLayout />} />
</Route>
<Route path="*" element={NotFound} />
</Routes>
...
但是在PrivateRoute 我得到了未定义
const {authState, authReducer} = useContext(AuthContext);
const {state, dispatch} = authState;
const ele = state.login === true ? <Outlet /> : <Navigate to="/login" replace />;
return <Route path={path} element={ele} />;
在这种情况下,如何在 PrivateRoute 中获取 AuthContext?
谢谢
【问题讨论】:
-
你在哪里创建上下文?你是把它导出到私有路由吗?
-
上下文在 AuthContext.jsx 中创建并导入
App.js和PrivateRoute
标签: reactjs react-hooks react-router-dom react-context