首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react-router中的查询字符串

react-router中的查询字符串
EN

Stack Overflow用户
提问于 2016-03-20 10:25:49
回答 2查看 26.5K关注 0票数 24

我正在尝试使用查询字符串设置路由路径。某物类似于:

代码语言:javascript
复制
www.mywebsite.com/results?query1=:query1&query2=:query2&query3=:query3

然后,我会像这样转换到"Results“组件:

代码语言:javascript
复制
<Route path="/" component={Main}>
  <IndexRoute component={Home} />
  <Route path="results?query1=:query1&query2=:query2&query3=:query3"
    component={SearchResults} />
</Route>

在SearchResults容器中,我希望能够访问query1,query2和query3参数。

我一直没能让它工作。我得到以下错误:

bundle.js:22627警告:react-路由器位置"/results?query1=1&query2=2&query3=3“与任何路由都不匹配

我尝试遵循以下指南中的步骤:(小节:查询字符串参数怎么办?) https://www.themarketingtechnologist.co/react-router-an-introduction/

我能在这里得到一些帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-20 10:46:38

如果您使用的是React Router v2.xx,则可以通过传递给路由组件的location.query对象访问查询参数。

换句话说,您可以修改您的路由,使其如下所示:

代码语言:javascript
复制
<Route path="results" component={SearchResults} />

然后在SearchResults组件中,使用this.props.location.query.query1 (类似于query2query3)访问查询参数值。

EDIT:这仍然是React Router v3.xx的情况。

票数 25
EN

Stack Overflow用户

发布于 2017-05-08 23:09:58

如果您正在使用React路由器,>= v4 location.query将不再可用。您可以插入一个外部库(如https://www.npmjs.com/package/query-string),或者使用如下所示的内容:

代码语言:javascript
复制
const search = props.location.search; // could be '?foo=bar'
const params = new URLSearchParams(search);
const foo = params.get('foo'); // bar

(只需记住,Internet Explorer不支持URLSearchParams() )

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36109590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档