【发布时间】:2022-01-15 18:32:22
【问题描述】:
出于学习目的,我正在尝试使用 React-Router v6 创建一个受保护的自定义路由。正如我之前在论坛或此处尝试过的许多人一样,我收到此错误:错误:[ProtectedRoute] 不是组件。
此外,如果有人正在为不可重用的实现而苦苦挣扎,可以在下面查看我的工作代码:我的问题是我真的希望它是可重用的,这样我就可以避免这种混乱的代码。如果您有任何想法,请告诉我。
我个人认为由于当前的 V6 实现,这有点不可能。也许他们将来会让我们这样做。但我希望这篇文章能帮助那些想要保护路由的人,尤其是在使用 Parse 平台时。
自定义路线:
const ProtectedRoute = ({ component: Component, ...rest }) => {
return (
<Route
{...rest}
render={(props) => {
<AuthWrapper>
<Component {...rest} {...props} />
</AuthWrapper>;
}}
/>
);
};
包装器使用 Parse Server 在用户当前未登录时保护路由。
const AuthWrapper = ({ children }) => {
if (Parse.User.current() !== null) {
let isAuthenticated = Parse.User.current().getSessionToken();
let authCondition = isAuthenticated !== undefined;
if (authCondition) {
return children;
}
}
return <Navigate to={"/login"} />;
};
export default AuthWrapper;
没有自定义路线的工作解决方案:(ofc 没有<ProtectedRoute />)
<Route
path="/book"
element={
<AuthWrapper>
<BookPage />
</AuthWrapper>
}
/>
我想做什么:
<ProtectedRoute
path={'/path'}
element={<Anything/>}
/>
【问题讨论】:
标签: javascript reactjs parse-platform react-router react-router-dom