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

如何在react-router v4中获取查询参数

司徒耀
2023-03-14

我在我的项目中使用react-router-dom 4.0.0-beta.6。我有一个代码如下:

<Route exact path="/home" component={HomePage}/>

我想在HomePage组件中获取查询参数。我找到了location.search参数,如下所示:?key=value,因此未解析。

什么是正确的方法来获得查询参数与反应路由器v4?

共有3个答案

董和风
2023-03-14

给出的答案是肯定的。

如果您想使用qs模块而不是query-string(它们的受欢迎程度大致相同),以下是语法:

const query = qs.parse(props.location.search, {
  ignoreQueryPrefix: true
})

忽略前导问号的选项是忽略前导问号。

胡俊美
2023-03-14

另一个有用的方法是像这样使用现成的URLSearchParams

  let { search } = useLocation();

   const query = new URLSearchParams(search);
   const paramField = query.get('field');
   const paramValue = query.get('value');

干净,易读,不需要模块。更多信息在下面;

  • https://reacttraining.com/react-router/web/example/query-parameters
  • https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
芮安顺
2023-03-14

解析查询字符串的功能已从V4中删除,因为多年来一直有支持不同实现的请求。因此,团队决定最好由用户决定该实现是什么样子。我们建议导入查询字符串库。这是我用的

const queryString = require('query-string');

const parsed = queryString.parse(props.location.search);

如果您想要一些本地的东西,并且它能满足您的需要,您也可以使用新的URLSearchParams

const params = new URLSearchParams(props.location.search);
const foo = params.get('foo'); // bar

你可以在这里阅读更多关于这个决定的信息

 类似资料:
  • 问题内容: 从服务器重定向后,如何在我的routes.jsx文件中定义路由以从Twitter的单点登录过程生成的URL 捕获参数值? 我尝试使用以下路由配置,但没有捕获上述参数: 问题答案: 反应路由器v3 React Router已经为您解析了位置并将其作为道具传递给RouteComponent。您可以通过访问查询(在URL中的?之后)部分 如果要查找路径参数值(在路由器内部用冒号(:)分隔),

  • 我想使搜索页面后,我点击它的按钮将被重定向到另一个页面。这一页将是这样的 还有我的路由器看起来像这样 问题是如何在Vue中获取目标页面中的查询值。JS3?这个答案仍然让我困惑,因为没有使用CompositionAPI,也没有在VueJS3中使用

  • 问题内容: 我正在构建一个通用的Web服务,需要将所有查询参数都转换为一个字符串以供以后解析。我怎样才能做到这一点? 问题答案: 您可以通过上下文访问单个参数,也可以通过上下文访问所有参数: 关键是 jax-rs批注,可用于访问: UriInfo,请求,HttpHeaders,SecurityContext,提供程序

  • 如何在Vue中获取查询参数。js? 例如,。 找不到获取的方法,或者我需要为此使用纯JS或一些库吗?

  • 如何在我的routes.jsx文件中定义一个路由来捕获参数值,这些参数值是在从服务器重定向后由Twitter的单点登录进程生成的URL中获得的? 我尝试了以下路由配置,但未捕获提到的参数:

  • 问题内容: 我在客户端上为我的应用程序使用react和react-router。我似乎无法弄清楚如何从如下网址获取以下查询参数: 我的路线如下所示(我知道该路线完全错误): 我的路线工作正常,但我不确定如何格式化路径以获取所需的参数。感谢任何帮助! 问题答案: 注意:复制/粘贴评论。确保喜欢原始帖子! 编写es6并使用react 0.14.6 / react-router 2.0.0-rc5。我使