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

如何在Reach路由器上获取参数

姜嘉赐
2023-03-14

我在使用react hooks的reach router上遇到了一点问题。我需要在浏览器中捕获路由的参数,我尝试使用Web of reach路由器中的本机文档的道具,但这并没有给我参数,路由是这样的:http://localhost:8080/home?init=true

如何捕获该变量“init”?

共有2个答案

干浩阔
2023-03-14

Reach Router有一个useLocation钩子,你可以使用:

import { useLocation } from "@reach/router"
// then 
const location = useLocation()

在<code>位置。搜索是搜索字段,包含URL中的所有查询参数(查询字符串)。在您的示例中,/home?init=true将返回位置。搜索:“?init=true”,这是一个查询字符串。

您可以使用查询字符串库(yarn add query-string)来解析以下内容:

import { parse } from "query-string"
// then
const searchParams = parse(location.search)

这将给你对象{init:“true”}你也可以使用queryString.parse('foo=true',{parseBooleans:true})解析布尔值

所以完整的例子应该是

import { useLocation } from "@reach/router"
import { parse } from "query-string"
// and
const location = useLocation()
const searchParams = parse(location.search) // => {init: "true"}
督冠玉
2023-03-14

很快,我们大多数人每次都会重做这个,所以最好创建一个自定义钩子来做这件事。

    // A custom hook that builds on useLocation to parse
    // the query string for you.
    export const useQuery = queryParam => {
      const search = new URLSearchParams(useLocation().search);
      return search.get(queryParam);
    };
 类似资料:
  • 对于react应用程序,我有以下嵌套路由/组件的基本结构:

  • 我有一个路由器像下面: 以下是我想要实现的目标: 如果未登录,将用户重定向到 如果用户在登录后试图访问,请将其重定向到root 因此,现在我尝试在

  • 本文向大家介绍如何获取路由传过来的参数?相关面试题,主要包含被问及如何获取路由传过来的参数?时的应答技巧和注意事项,需要的朋友参考一下 如果使用方式传入的参数使用 接收 如果使用方式传入的参数使用接收 参考:路由组件传参

  • 我正在尝试使用React-Relay路由器学习React-Relay和GraphQL,但无法在我的路由中获得参数。我的困难在于“/Maps/:userID”路线。 这是我的路由器: 这是我的中继容器和根查询: 这里是我的react组件中的一个位置,我在route参数中插入了userID。我正在使用react router的browserHistory。“1”是我的测试用户ID。 这是我的模式的根查

  • 本文向大家介绍详解react如何在组件中获取路由参数,包括了详解react如何在组件中获取路由参数的使用技巧和注意事项,需要的朋友参考一下 路由参数 假如我们有很多 list 页面,这些页面除了动态内容不同,其他的页面部分都相同,这个时候需要怎么配置路由和组件呢? 这种场景就需要用到路由的参数功能,增加一条包含参数的路由配置。 注意 path 属性中的 :id 就是该路由的参数( param )。