我正在尝试使用http://localhost:3000/login?Id=1这样的查询参数来实现React路由器,我只能在我的登录路由中实现它,如果我将路径作为http://localhost:3000/然后重定向,但是,我想在整个应用程序中实现。如果我在其他路由上实现,它会匹配namatch
路由。这就是我的index.js
的样子,有人能指导我如何实现包括查询参数在内的所有路由路径吗?
ReactDOM.render(
<BrowserRouter>
<Switch>
<Route
exact
path={`/`}
render={() => {
if (!store.getState().login.isAvailable) {
return <Redirect to={`/login?Id=${Id}`} />
} else {
return <Dashboard />
}
}}
/>
<Route exact path={`/login`} component={Login} />
<Route exact path={`/signup`} component={SignUp} />
{Routes.map((prop, key) => (
<Route path={prop.path} key={key} component={prop.component} />
))}
<Route component={NoMatch} />
</Switch>
</BrowserRouter>,
document.getElementById('root')
)
有两种方法可以完成你想要的。最基本的方法是在每个“页面”或每个路由的根组件上,处理查询参数的解析。
作为< code>Route组件的< code>component的任何组件都将被传递适当的< code >位置。查询参数位于< code>location.search中,需要对其进行解析。如果你只是担心现代的浏览器,你可以使用URLSearchParams,或者你可以使用像query-string这样的库,当然,你也可以自己解析它们。
您可以在react router文档中阅读更多信息。
第二种方法其实并没有什么不同,但你可以使用一个HOC来包装你的每个“页面”,处理查询参数的解析,并将它们作为列表或其他东西传递给有问题的“页面”组件。
以下是使用URLSearchParams
的基本方法的示例:
import React from "react";
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
// this is your "page" component, we are using the location prop
function ParamsPage({ location }) {
// you can use whatever you want to parse the params
let params = new URLSearchParams(location.search);
return (
<div>
<div>{params.get("name")}</div>
// this link goes to this same page, but passes a query param
<a href="/?name=MyName">Link that has params</a>
</div>
);
}
// this would be equivalent to your index.js page
function ParamsExample() {
return (
<Router>
<Route component={ParamsPage} />
</Router>
);
}
export default ParamsExample;
编辑:为了澄清,你不需要在你的index.js页面上做任何事情来完成这项工作,你拥有的简单的Route
应该可以正常工作。
对于下面的代码: 我有一个路由器路由到另一个路由器,看起来像这样: 处理程序如下所示: 我的问题是处理程序无权访问请求.params 中的campaign_uid。如何访问campaign_uid/传递给处理程序?
问题内容: 我正在使用AngularJS路由,并试图查看如何使用查询字符串(例如 )。Angular无法理解包含相同名称的键值对的路由: 问题答案: 我认为路由不适用于查询字符串。可以使用 如下方式而不是使用更RESTful的URL,然后按以下方式定义路由: 或许
我已经使用FastAPI创建了一个简单的API,我正在尝试将URL作为任意的<code>路径</code>参数传递给FastAPI路由。 当我测试它时,它不起作用并抛出错误。我以这种方式测试它:
使用redux和反应路由器,我想访问路由指定的组件以外的组件上的路由参数。 我已经对react-router、redux和react-router-redux进行了如下设置,我想从我的redux存储访问reportId参数。 我已经尝试连接react-redux路由器来存储路由状态,但是我发现除了活动路由的完整路径之外,redux内部没有任何有用的存储。这让我可以选择从redux中的路径解析出re
所以我面临的问题是,当我点击Hover Books组件中的链接进入一个新页面时,我可以在其中呈现图书状态,但当我按下它时,什么也没有发生。我知道错误可能在哪里(路由)。如果你能帮我修好它,我将不胜感激。谢谢
我对反应和试图理解如何传递道具很陌生。 首先,我设置了一个Navlink组件,该组件包含子类别属性: ,,都是从json文件中获取的,所以这部分是可以的。 每条路线的定义如下: 所以它呈现一个名为