当前位置: 首页 > 知识库问答 >
问题:

使用React路由器重定向页面的最佳方式是什么?[关闭]

宗政洋
2023-03-14

我是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个答案

阎弘
2023-03-14

实际上,这取决于您的用例。

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,因为 matchlocationhistory传递给其子组件。

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状态代码系列包含: 这些和其他代码具有不同的语义。正确的选择取决于您的情况。资源是否已永久移动到新位置?还是重定向只是临时的?