我是React Router的新手,我了解到有很多方法可以重定向页面:
import { browserHistory } from 'react-router';
//do something...
browserHistory.push("/path");
class Foo extends React.Component {
constructor(props, context) {
super(props, context);
//do something...
}
redirect() {
this.context.router.push("/path")
}
}
Foo.contextTypes = {
router: React.PropTypes.object
}
在React Router v4中,有this.context.history.push(“/path”)
和this.props.history.push(“/path”)
。详细说明:如何在React路由器V4中推到历史?
我被所有这些选项弄糊涂了,有没有一个最好的方法来重定向一个页面?
实际上,这取决于您的用例。
1)您希望保护路由免受未经授权的用户的攻击
如果是这种情况,您可以使用名为
的组件,并可以实现以下逻辑:
import React from 'react'
import { Redirect } from 'react-router-dom'
const ProtectedComponent = () => {
if (authFails)
return <Redirect to='/login' />
}
return <div> My Protected Component </div>
}
myFunction() {
addSomeStuff(data).then(() => {
this.props.history.push('/path')
}).catch((error) => {
console.log(error)
})
myFunction() {
addSomeStuff()
this.props.history.push('/path')
}
如果您的组件是
组件的子组件,即类似于
组件={myComponent}/>,则不必用wisthrouter
,因为
将match
、location
和history
传递给其子组件。
3)单击某个元素后重定向
这里有两种选择。您可以通过将history.push()
传递给onclick
事件来使用它:
<div onClick={this.props.history.push('/path')}> some stuff </div>
也可以使用
组件:
<Link to='/path' > some stuff </Link>
我认为在这种情况下,经验法则是首先尝试使用
,我想尤其是因为性能的原因。
问题内容: 我是React Router的新手,并了解到重定向页面的方法有很多: 使用 使用 在React Router v4中,有和。 我对所有这些选项感到困惑,是否有最佳的方法来重定向页面? 问题答案: 实际上,这取决于您的用例。 1)您想保护您的路线免受未经授权的用户的侵害 如果是这种情况,则可以使用称为的组件,并可以实现以下逻辑: 请记住,如果您想按预期的方式工作,则应将其放在组件的ren
我一直试图做一个简单的重定向到按钮点击的另一个组件,但由于某种原因,它不起作用。我想重定向到/dashboard并从登录显示AdminServices,如下所示: //索引。js //应用程序。js //登录。js //管理服务。js
在开发模式下运行时,Spring Security重新定向到React前端(使用React路由器运行)的登录页面时,我遇到了一个配置问题。我相信我的前端没有接收到重定向,这是因为我对服务器端路由如何与SPA路由交互的noob理解。 我的开发前端web服务器(使用Facebook Create React App)在localhost:3000上运行,我的后端Spring Boot Tomcat在l
我想在单击登录页中的按钮后重定向到主页。但是,当我单击地址栏中的按钮时,主页的路径会显示出来(它重定向到主页)…但它不会呈现与该路径相关的组件。它仍然显示带有主页地址的登录页。因此,我必须刷新页面才能呈现主页。这里有什么问题??? 在我的登录页面中…这是我用于单击按钮的功能。。 在我的索引,js页面...
我正在尝试使用react router(版本^1.0.3)做一个简单的重定向到另一个视图的操作,我只是觉得有些累。 我只需要将用法发送到“/login”,就这样。 我能做什么? 控制台中的错误: 未捕获的引用错误:未定义PropType 用我的路线归档
问题内容: 任何人都可以建议我使用以下两种方法中使用REST重定向URL的最佳方法: 问题答案: 重定向有多种形式。该HTTP状态代码系列包含: 这些和其他代码具有不同的语义。正确的选择取决于您的情况。资源是否已永久移动到新位置?还是重定向只是临时的?