- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个看起来像这样的 React Route...它根据 URL 参数的值有条件地呈现一个组件:
<Route path="/blog/:postId" render={(props) = {
const postId = props.match.params.postId; // extract post from url
return (
post
? <Post {...props} postId={postId} />
: <div>Post does not exist</div>
);
}
我只希望经过身份验证的用户能够访问此路由,这意味着我将把它变成这样的 PrivateRoute ( from the docs ):
const PrivateRoute = ({ component: Component, ...rest }) => (
<Route
{...rest}
render={props =>
fakeAuth.isAuthenticated ? (
<Component {...props} />
) : (
<Redirect
to={{
pathname: "/login",
state: { from: props.location }
}}
/>
)
}
/>
);
然后我会像这样使用专用路由...
<PrivateRoute path="/blog/:postId" component={Post} />
但是我如何检查 PrivateRoute 中的 URL 参数并根据 URL 参数有条件地呈现 Post 组件?
最佳答案
你可以这样写:
const PrivateRoute = ({ component: Component, ...rest }) => (
<Route
{...rest}
render={props => {
const postId = props.match.params.postId;
return fakeAuth.isAuthenticated ? (
postId ?
<Component {...props} />
: <div>Post does not exist</div>
) : (
<Redirect
to={{
pathname: "/login",
state: { from: props.location }
}}
/>
)
}}
/>
);
但这不是一个好主意,因为如果将来您想要更多条件,那么 PrivateRoute 将变得更加复杂。我会建议将所有类型的检查放在 Post 组件本身中,如下所示:
render(){
if(!this.props.match.params.id)
return <div>Post does not exist</div>
else (.....)
}
或者,如果您不想更改 Post 组件,则创建一个包装器组件并将此逻辑放入其中,如下所示:
<PrivateRoute path="/blog/:postId" component={PostWrapper} />
const PostWrapper = props => {
if(props.match.params.id)
return <Post {...props} />
return <div>Post does not exist</div>
}
关于访问 URL 参数的 ReactJS PrivateRoute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49186183/
我想延长 react-router-dom 的组成部分|所以它会在 path 之前添加一些值属性(property)。它看起来像这样: export default function MyRoute(
我有一个看起来像这样的 React Route...它根据 URL 参数的值有条件地呈现一个组件: : Post does not exist ); } 我只希望经过身份验证
我的 app.js 中有这段代码,并配置了一个 PrivateRoute,它要求用户登录,并且只有在设置了 cookie 时才允许访问。但是,我想限制用户在成功登录后尝试点击 /login 。我使用了
我正在尝试在我的单页应用程序中创建一个简单的身份验证系统。我想为访客禁用除 /login 之外的所有路由。了解用户是否通过身份验证或访客的方法是了解 localStorage 中是否有 access_
我是 React 新手。我现在正在研究react router,看到很多人使用PrivateRoute组件来处理用户身份验证页面。但是,我对这个函数的语法和理解感到非常困惑。 export funct
我是 ReactJS 的新手,并开始使用 React 开发我的第一个应用程序。我一直在观看视频并浏览各种教程,并最终成功地使用 Login 构建了我的第一个 ReactRedux 应用程序。 我用过
我正在学习在 Typescript 中使用 React Router。我也在阅读这篇关于如何在 typescript+react 路由器中实现 PrivateRoutes 的文章。 https://t
我见过很多关于人们如何使用 react-router-dom 创建私有(private)路由的用例。它通常看起来像这样: const PrivateRoute = ({component: Compo
https://reacttraining.com/react-router/web/example/auth-workflow 我在 react-router-dom 文档中实现 Private-R
我正在使用 React-Router V4,我想移交“经过身份验证”的属性来决定是将用户发送到登录页面还是请求的页面: PrivateRoute.js import React from "react
我尝试创建一个 PrivateRoute使用react-router-dom like this example我有一个这样的错误: Attempted import error: 'PrivateR
这是一个来自 react-router 的例子,说明如何为 protected 路由添加一个组件: function PrivateRoute({ component: Component, ...r
我试图在我的应用程序中实现一些安全性,并最终创建了以下代码: import React from 'react'; import { Route, Redirect } from 'react-rou
在我的 react.js 项目中集成 PrivateRoute HOC 时,我完全卡住了。 这是我的路线文件 import React, { Component } from "react"; imp
示例 https://reacttraining.com/react-router/web/example/auth-workflow 中提供了 PrivateRoute连接 Redux 后不工作。
我正在使用 React Router v6 并为我的应用程序创建私有(private)路由。 在文件 PrivateRoute.js 中,我有代码 import React from 'react';
我是一名优秀的程序员,十分优秀!