如何从查询字符串中获取参数值?

2024-01-26

如何在routes.jsx文件中定义路由来捕获__firebase_request_key从 Twitter 的单点登录进程在从其服务器重定向后生成的 URL 中的参数值?

http://localhost:8000/#/signin?_k=v9ifuf&__firebase_request_key=blablabla

我尝试了以下路由配置,但是:redirectParam没有捕获提到的参数:

<Router>
  <Route path="/" component={Main}>
    <Route path="signin" component={SignIn}>
      <Route path=":redirectParam" component={TwitterSsoButton} />
    </Route>
  </Route>
</Router>

React Router v6,使用钩子

在react-router-dom v6中,有一个名为的新钩子使用搜索参数 https://reactrouter.com/en/v6/hooks/use-search-params。所以与

const [searchParams, setSearchParams] = useSearchParams();
searchParams.get("__firebase_request_key")

你会得到"blablabla"。请注意,searchParams 是 URLSearchParams 的一个实例,它也实现了一个迭代器,例如用于使用 Object.fromEntries 等。

React Router v4/v5,无钩子,通用

React Router v4 不再为你解析查询,但你只能通过以下方式访问它this.props.location.search(或使用位置,见下文)。原因参见恩博查特的回答 https://stackoverflow.com/a/48256676/969483.

例如。和qs https://github.com/ljharb/qs库导入为qs你可以做

qs.parse(this.props.location.search, { ignoreQueryPrefix: true }).__firebase_request_key

另一个图书馆是请求参数 https://github.com/sindresorhus/query-string. See 这个答案 https://stackoverflow.com/a/53079875/969483有关解析搜索字符串的更多想法。如果您不需要IE兼容 https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams你也可以使用

new URLSearchParams(this.props.location.search).get("__firebase_request_key")

对于功能组件,您将替换this.props.location用钩子使用位置 https://reacttraining.com/react-router/core/api/Hooks/uselocation。注意,你可以使用window.location.search,但这不允许在更改时触发 React 渲染。 如果您的(非功能性)组件不是Switch你需要使用带路由器 https://reacttraining.com/react-router/web/api/withRouter访问路由器提供的任何道具。

反应路由器 v3

React Router 已经为你解析了位置并将其传递给你的路由组件 https://reacttraining.com/react-router/core/api/Route/Route-props作为道具。您可以通过以下方式访问查询(网址中?之后)部分

this.props.location.query.__firebase_request_key

如果您正在查找路由器内用冒号 (:) 分隔的路径参数值,可以通过以下方式访问这些值

this.props.match.params.redirectParam

这适用于最新的 React Router v3 版本(不确定是哪个)。据报告使用较旧的路由器版本this.props.params.redirectParam.

General

nizam.sp 的建议

console.log(this.props)

无论如何都会有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从查询字符串中获取参数值? 的相关文章

随机推荐

  • 如何在C#中使用文本框搜索列表视图的项目

    我有一个列表视图名称listView1 它包含计算机ID和它们的一些信息 所以我想做的是我有一个文本框名称过滤框 当我写东西时它会过滤它 它工作得很好 我的问题是它只是寻找第一列不是其他列 例如 PCNAME USER MODEL AAAA
  • 知道类中的所有变量是否为空的最佳方法是什么?

    这意味着类已初始化 但变量尚未设置 示例类 public class User String id null String name null public String getId return id public void setId
  • Groovy 不在集合中

    在 Groovy 中检查列表是否包含某些内容的惯用方法是使用in if b in a b c 但是如何很好地检查某些内容是否不在集合中呢 if g in a b c 使用逻辑看起来并不混乱 不经意的一瞥是隐藏的 在 Groovy 中是否有更
  • 如何从 ion-searchbar 获取输入?

    这是超级简单的问题 但我似乎无法弄清楚这一点 是的 我已经阅读了文档 我正在尝试获取用户输入的内容ion searchbar 在 Ionic v4 中 在他们按搜索并放入 const let 后 麻哈HTML
  • 带有 std::thread 和 std::chrono 的基本计时器

    我正在尝试使用经典方法来实现一个基本计时器 start 和 stop 我将 c 11 与 std thread 和 std chrono 一起使用 启动方法 创建一个在给定间隔时间内休眠的新线程 然后执行给定的 std function 当
  • 设置 UIView 的背景颜色会增加内存使用量

    我正在将许多 UIView 加载到 UIScrollView 上 并试图找出它们使用这么多内存的原因 经过使用 Instruments 的排除过程后 我发现设置视图的背景颜色会增加 4 倍的内存使用量 如果我不设置背景颜色 内存使用量约为
  • 上传到firebase时如何防止重复图像?

    当我想将图像上传到 firebase 实时数据库和存储 时遇到一些问题 在实时数据库中 我的图像对象默认有一张图像 并且当我上传其他图像时我不想覆盖图像所以我使用了传播运算符 SO 当我选择时一张图片并单击上传它们 它可以工作并保存 没有重
  • 更新列表列表中的属性

    问题是 如何在不循环的情况下更新 allItems 内的 ItemCount 字段 例如使用 Linq 例如 如果 Index 0 我想将 ItemCount 设置为 ItemCount 5 您可以看到下面的代码 我有以下课程 public
  • 尝试使用 LEFT OUTER JOIN 优化 MySQL 查询

    我有这个查询 它工作正常 只是需要很长时间 7 秒 jobs 表中有 40k 条记录 wq 表中有 700k 条记录 我尝试了 EXPLAIN 它说它查看作业表中的所有记录 并且不使用任何索引 我不知道如何告诉 MySQL 在查找 wq 表
  • 淘汰赛验证插件自定义错误消息

    根据以下内容 我到底如何设置回调以显示自定义错误消息而不是默认消息 ko validation rules exampleAsync async true the flag that says Hey I m Async validator
  • Pyaudio:将输入连接到输出时出错

    我正在 Intel Edison 主板上尝试 pyaudio 但它在内置测试中失败了 单独录音和播放在我的设置中工作得很好 但如果我尝试将输入连接到输出 则会出现错误 文件 wire full py 第 33 行 位于 data strea
  • 将子组件的配置传递给父组件

    通常 要定义网格类型 我会执行以下操作 Ext define MyApp view MyGrid extend Ext grid Panel alias widget myGrid store MyStore columns 然后我通过其
  • 如何在iOS App Store Sandbox中测试自动续订订阅的“续订”组件?

    Folks 我正在尝试验证自动续订订阅是否确实在沙盒环境中续订 首先 沙盒中的自动续订订阅似乎只有 5 分钟的有效期 说得通 我预计如果我等待五分钟 然后再拨打 https sandbox itunes apple com verifyRe
  • NSString 为空

    如何测试 NSString 是否为空 或全部空白或为零 通过单个方法调用 你可以尝试这样的事情 implementation NSString JRAdditions BOOL isStringEmpty NSString string i
  • 如何有效地对Delta表进行分区?

    在将数据帧存储在增量表中时 为我的数据帧寻找有效的分区策略 我当前的数据帧 1 5000 000 rowa 将数据从数据帧移动到增量表需要 3 5 小时 为了寻找一种更有效的方法来完成此写作 我决定尝试表中的不同列作为分区列 我搜索了列的基
  • Moment js - 显示距离日期还有几天和几小时

    我正在开发一个项目 需要对日期对象进行这种文本响应 1天7小时路程 需要这样 而不是 距离 31 小时 或 距离 1 天 我也在使用 moment js 因为我正在英语和德语之间进行语言切换 所以我已经利用了 moment js 语言区域设
  • Mac 上的 Docker Beta:无法使用 ip 访问 nginx 容器

    我安装了 docker beata https beta docker com https beta docker com 对于 OSX 接下来 我用这个文件创建了一个文件夹docker compose yml web image ngin
  • ggraph/ggplot2 中的手动图例 [R]

    除了这个帖子 https stackoverflow com questions 51569831 how to draw graph corresponding with its attributes in ggraph r 在这里我提出
  • Web API Core 2.2 中的延迟加载

    我遇到了延迟加载的问题 我有以下 dbcontext public virtual DbSet
  • 如何从查询字符串中获取参数值?

    如何在routes jsx文件中定义路由来捕获 firebase request key从 Twitter 的单点登录进程在从其服务器重定向后生成的 URL 中的参数值 http localhost 8000 signin k v9ifuf