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

react路由器路径中的问号

董子平
2023-03-14

我正在尝试在我的URL中传递参数,但我的阅读有问题。我正在使用react-router v4。

网址:http://localhost:3000/reset?token=123我试着这样读:

<Route
   path="/reset?token=:token"
   component={Reset}/>

但这打印空对象console.log(this.props.match.params);。奇怪的是,我试图将问号更改为其他字符,看起来它解决了我的问题,但我还是想保留问号。

网址:http://localhost:3000/reset_token=123

<Route
   path="/reset_token=:token"
   component={Reset}/>

这已经工作了< code > console . log(this . props . match . params);。有没有办法让问号也正确?对我来说,真正重要的是继续使用react-router,而不使用任何外部库。

干杯,丹尼尔

共有3个答案

申炳
2023-03-14

将路径更改为“/reset”。这将使页面呈现的令牌仍在url中,您将能够获取该令牌。快乐编码:)

<Route
path="/reset"
component={Reset}/>
贲宏硕
2023-03-14

您需要查询字符串

例如:http://yoursite.com/page?search=hello

const queryString = require('query-string')

class ProductsPage extends React.Component {
  componentDidMount() {
    let search = queryString.parse(this.props.location.search).search
    console.log(search) // ==> hello
  }

...
}
蒲功
2023-03-14

我是如何解决这个问题的。

http://localhost:3000?token=mypetismissing代码

export default function ({ location }) {
  const urlParams = new URLSearchParams(location.search);
  const token = urlParams.get('token');
  console.log(myParams)

  return (
    <div>
      {token}
    </div>
  )
}
 类似资料:
  • 如果我将路由折叠起来,这样看起来就像: 工作很好。我嵌套的原因是因为我将在“dashboard”下有多个子项,并且希望它们都在URL中以为前缀。

  • 如何使用react router v4获取当前路径? 我尝试了以下方法,但没有成功: 错误: 这是我的Routes.js文件:

  • 使用redux和反应路由器,我想访问路由指定的组件以外的组件上的路由参数。 我已经对react-router、redux和react-router-redux进行了如下设置,我想从我的redux存储访问reportId参数。 我已经尝试连接react-redux路由器来存储路由状态,但是我发现除了活动路由的完整路径之外,redux内部没有任何有用的存储。这让我可以选择从redux中的路径解析出re

  • 在以下React应用程序中,有两个路由URLhttp://myapp 正确布线到布局构件。但是,URLhttp://myapp/login 也路由到布局组件,而不是登录。如果我将path=“/login”更改为“/sign”,它将正确路由到登录组件。 React路由器中的“/login”路径将其路由到路由是否有特殊之处?或者我设置这个路由的方式有错误吗?

  • 我试图在一个容器中获取反应路由器的当前路径,这样我就可以将其传递给一个子组件,该组件将更改它的可见性过滤器。 更具体地说,我试图使导航菜单突出当前活动的页面。 我正在使用redux、redux、react-router和react-router-redux,这样我就可以从redux存储访问路由器状态。 从react-router-redux的docs中,它说要做这样的事情: 以下是我的容器组件:

  • 我在想这样的事情: 前台有一个不同的布局和风格与管理区域。所以在frontpage中的路由是home、about等等,其中一个应该是子路由。 /home应该呈现到Frontpage组件中,而/admin/home应该呈现在后端组件中。 最终解决方案: 这是我现在使用的最终解决方案。这个例子也像传统的404页面一样有一个全局错误组件。