首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查用户是否在反应反应堆6中获得授权

检查用户是否在反应反应堆6中获得授权
EN

Stack Overflow用户
提问于 2022-07-18 12:10:56
回答 1查看 75关注 0票数 -1

我正在使用一个YouTube教程来学习反应。他们使用的是较早版本的react-router-dom。我已经想出了如何在简单的事情上使用v6,但现在我在PrivateRoutes。我似乎想不出该改变什么。

代码语言:javascript
复制
# /src/reducers/auth.js

const initialState = {
    token: localStorage.getItem('token'),
    isAuthenticated: null,
    isLoading: false,
    user: null
};

export default function(state = initialState, action) {
    switch (action.type) {
        default:
            return state;
    }

}
代码语言:javascript
复制
# /src/reducers/index.js
mport { combineReducers } from "redux";
import leads from './leads';
import errors from './errors';
import messages from "./messages";
import auth from "./auth";

export default combineReducers({
    leads,
    errors,
    messages,
    auth,
});
代码语言:javascript
复制
// /src/common/PrivateRoute.js

import React from 'react';
import { Route, Navigate } from "react-router-dom";
import { connect } from "react-redux";
import PropTypes from "prop-types";

const PrivateRoute = () =>  (
//    const { user } = useAuth;
    <Navigate to='/register' />
)

// const mapStateToProps = state => ({
//     auth: state.auth
// });

export default (PrivateRoute);
// export default connect(mapStateToProps)(PrivateRoute);
代码语言:javascript
复制
// App.js

import PrivateRoute from './common/PrivateRoute';

<Routes>
                                <Route path="/" element={<Dashboard/>} />
                                <Route path="/login" element={<PrivateRoute><Login/></PrivateRoute>} />
                                <Route path="/register" element={<Register/>} />
                            </Routes>

如果我除了在Navigate中使用PrivateRoute之外什么都不做,它就能工作。如果我尝试使用({ children }),我会得到很多错误。

我试过关于反应堆文档的auth示例,但是我想我可能太新了,无法理解我做错了什么。

EN

回答 1

Stack Overflow用户

发布于 2022-07-18 12:22:26

,您可以使用router V6来完成它。创建一个PrivateRoutes组件并添加app.js并使用它.

代码语言:javascript
复制
 // App.js
 const App: FC = () => {
  const isAuthorized = useSelector<RootState>(({auth}) => auth.user, shallowEqual)
  return (
   <>
     <BrowserRouter>
       <Routes>
         {isAuthorized ? (
           <Route path='/*' element={<PrivateRoutes />} />
         ):(
           <Route path='/login' element={<LoginPage />} />
         )}
         <Route path='error/*' element={<ErrorsPage />} />
       </Routes>
     </BrowserRouter>
   </>
 );
}
       
// /src/common/PrivateRoute.js
import React from 'react';
import { Route, Navigate } from "react-router-dom";
import { connect } from "react-redux";
import PropTypes from "prop-types";

const PrivateRoute = () =>  (
  const DashboardPage = lazy(() => import('../pages/Dashboard'))
  return (
      <Routes>
        <Route element={<DashboardPage />}>
      </Routes>
    );
)
export default (PrivateRoute)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73022129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档