如何解决在ReactJS中应如何处理已认证和未认证的组件?
我正在使用React Redux为我的Express API构建一个用户界面,我想知道如何处理经过身份验证和未经身份验证的用户。拥有两个应用程序组件是一个好主意,一个用于经过身份验证和未经身份验证的用户-如果在用户登录后成功将JWT调度到redux状态,它将有条件地在主组件(app.js)中呈现。或解决问题的方法不好?
解决方法
是的,完全可以为授权用户和未授权用户创建单独的组件。为什么不只创建一个组件并将值作为prop传递,以便可以在一个组件中处理它呢?
,我建议您在主应用程序组件中使用私有和公共路线。
此blog article提供了很好的解释。
使用context-api,您的privateRoute.js可能看起来像这样:
import React,{ useContext } from 'react';
import { Route,Redirect } from 'react-router-dom';
import AuthContext from '../../context/auth/authContext';
const PrivateRoute = ({ component: Component,...rest }) => {
const authContext = useContext(AuthContext);
const { isAuthenticated,loading } = authContext;
return (
<Route
{...rest}
render={props =>
!isAuthenticated && !loading ? (
<Redirect to='/login' />
) : (
<Component {...props} />
)
}
/>
);
};
export default PrivateRoute;
,但是您必须从redux存储区中查询AuthContext。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。