当前位置: 首页 > 面试题库 >

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

苏坚成
2023-03-14
问题内容

__firebase_request_key从服务器重定向后,如何在我的routes.jsx文件中定义路由以从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>

问题答案:

反应路由器v3

React
Router已经为您解析了位置并将其作为道具传递给RouteComponent。您可以通过访问查询(在URL中的?之后)部分

this.props.location.query.__firebase_request_key

如果要查找路径参数值(在路由器内部用冒号(:)分隔),则可以通过以下方式访问它们

this.props.match.params.redirectParam

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

通用React Router v4和React Router v5

React Routerv4不再为您解析查询,但是您只能通过进行访问this.props.location.search。出于某些原因。

例如,您可以导入qs库qs

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

另一个库是query-string。有关解析搜索字符串的更多建议,请参见此答案。如果不需要IE兼容,也可以使用

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

对于功能组件,您将替换this.props.location为hook
useLocation。请注意,您可以使用window.location.search,但这不允许在更改时触发React渲染。如果您的(非功能性)组件不是的直接子代,则Switch需要使用withRouter来访问任何路由器提供的道具。

一般

nizam.sp的建议

console.log(this.props)

在任何情况下都会有帮助。



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

  • 问题内容: 从格式如下的URL查询字符串中获取参数的“较少代码”方法是什么? www.mysite.com/category/subcategory?myqueryhash 输出应为: 我知道这种方法: 问题答案: 包含您要查找的数据。 文件资料 **php.net:$** _SERVER-手册

  • 我有url从中我需要得到的值. “TypeError:无法读取未定义的属性'query'”

  • 问题内容: 我有一个HTML表单字段,其中包含一些URL字符串作为值。示例值是: 等等 如何仅从这些URL /值中获取参数? 请注意,我没有从浏览器地址栏中获取这些字符串。 问题答案: 您可以使用和。

  • 我有一个HTML表单字段< code > $ _ POST[“url”],值是一些URL字符串。 示例值为: 等等。 如何仅从这些 URL/值中获取参数? 请注意,我不是从浏览器地址栏中获取这些字符串的。