在 React JS 中获取查询字符串值
Get query string value in React JS
我有 URL 作为 http://example.com/callback?code=abcd
我需要获取代码的值。
下面是我的代码:
import React from 'react';
import { useEffect } from 'react';
const Callback = () => {
useEffect(() => {
console.log("hiii");
}, []);
return (
<React.Fragment>
Callback
</React.Fragment>
);
};
export default Callback;
请确认我如何获取它。
提前致谢。
使用这个库'query-string'
并用作
import queryString from 'query-string';
在构造函数中
constructor(props) {
const { location: { search } } = props;
const parsed = queryString.parse(search);
this.state = {
code: parsed.code,
}
}
希望它能解决您的问题!
您可以使用 URLSearchParams 接口获取 URL 的查询字符串。
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
const queryParams = new URLSearchParams(window.location.search);
const code = queryParams.get("code");
首先在 App.js 你应该 react-router-dom
import { Route, Switch } from "react-router-dom";
然后在 switch 中你可以像你的情况一样定义路由参数
<Route exact path="/callback/:code" component={YourComponentsName} />
在组件文件中,您可以从道具中获取参数
功能组件
const code = props.match.params.code
Class 组件
const code = this.props.match.params.code
或下一个方法
const code = new URLSearchParams(this.props.location.search);
const code = query.get('code')
console.log(code)//abcd
可能最好的方法是使用 useParams
挂钩,因为您有一个功能组件。阅读the documentation如下:
useParams
returns an object of key/value pairs of URL parameters. Use it to access match.params
of the current <Route>
.
我建议如下:
import React from 'react'
import { useParams } from 'react-router-dom'
const Callback = () => {
let { code } = useParams()
console.log({ code });
return (
<React.Fragment>
Callback
</React.Fragment>
)
};
+1 来自文档:
You need to be using React >= 16.8 in order to use any of these hooks!
你需要使用钩子...
useEffect(() => {
let urlParams = new URLSearchParams(window.location.search);
console.log(urlParams.code || "empty");
}, []);
试试这个
http://example.com/callback?code=abcd
// ReactJS
import React from "react";
import { useLocation } from "react-router-dom";
const MyComponent = () => {
const search = useLocation().search;
const code = new URLSearchParams(search).get("code");
console.log(code); //abcd
}
// VanillaJS
const code = window.location.search.split("=")[1];
console.log(code); //abcd
我有 URL 作为 http://example.com/callback?code=abcd
我需要获取代码的值。 下面是我的代码:
import React from 'react';
import { useEffect } from 'react';
const Callback = () => {
useEffect(() => {
console.log("hiii");
}, []);
return (
<React.Fragment>
Callback
</React.Fragment>
);
};
export default Callback;
请确认我如何获取它。 提前致谢。
使用这个库'query-string' 并用作
import queryString from 'query-string';
在构造函数中
constructor(props) {
const { location: { search } } = props;
const parsed = queryString.parse(search);
this.state = {
code: parsed.code,
}
}
希望它能解决您的问题!
您可以使用 URLSearchParams 接口获取 URL 的查询字符串。 https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
const queryParams = new URLSearchParams(window.location.search);
const code = queryParams.get("code");
首先在 App.js 你应该 react-router-dom
import { Route, Switch } from "react-router-dom";
然后在 switch 中你可以像你的情况一样定义路由参数
<Route exact path="/callback/:code" component={YourComponentsName} />
在组件文件中,您可以从道具中获取参数
功能组件
const code = props.match.params.code
Class 组件
const code = this.props.match.params.code
或下一个方法
const code = new URLSearchParams(this.props.location.search);
const code = query.get('code')
console.log(code)//abcd
可能最好的方法是使用 useParams
挂钩,因为您有一个功能组件。阅读the documentation如下:
useParams
returns an object of key/value pairs of URL parameters. Use it to accessmatch.params
of the current<Route>
.
我建议如下:
import React from 'react'
import { useParams } from 'react-router-dom'
const Callback = () => {
let { code } = useParams()
console.log({ code });
return (
<React.Fragment>
Callback
</React.Fragment>
)
};
+1 来自文档:
You need to be using React >= 16.8 in order to use any of these hooks!
你需要使用钩子...
useEffect(() => {
let urlParams = new URLSearchParams(window.location.search);
console.log(urlParams.code || "empty");
}, []);
试试这个
http://example.com/callback?code=abcd
// ReactJS
import React from "react";
import { useLocation } from "react-router-dom";
const MyComponent = () => {
const search = useLocation().search;
const code = new URLSearchParams(search).get("code");
console.log(code); //abcd
}
// VanillaJS
const code = window.location.search.split("=")[1];
console.log(code); //abcd