如何在 React JS 中读取组件内的 URL 参数? [复制]

Posted

技术标签:

【中文标题】如何在 React JS 中读取组件内的 URL 参数? [复制]【英文标题】:How to read URL Parameters within Component in React JS? [duplicate] 【发布时间】:2019-09-30 09:19:29 【问题描述】:

这听起来可能是转储,但我应该如何读取 URL 并从 React JS 中的 URL 获取其值。 我被告知使用 QueryString 来处理 GET 参数。

Url 看起来有以下结构:

localhost/test?id=xxx&value=yyyy

在组件类中我使用以下代码:

class test extends Component 

  func() 
    const params = queryString.parse(location.search);

     //here I get: ?id=xxx&value=yyyy
  

问号标志怎么也被检索了? 以及如何解决它,以便我能够在不制作太多的情况下获得这些值?

【问题讨论】:

@Ashish,问题是一样的,但答案并不完全符合我的要求。当有一些 npm 库可以更好地处理它时,我不想使用 window.location.search - 只是为了获取参数,我不认为使用任何库是个好主意。当你可以用你自己的一个小 util 函数来实现这一点时。我更喜欢那个。 【参考方案1】:

你可以使用URLSearchParams:

const windowUrl = window.location.search;
const params = new URLSearchParams(windowUrl);
// params['id']

或者,如果您想使用react-router 解决方案,您可以查看this answer。

【讨论】:

react-router 是我想要的方法。现在我只想阅读 GET 参数。【参考方案2】:

如果您使用react-router,这很容易。看到这个:https://tylermcginnis.com/react-router-query-strings/

【讨论】:

我是否必须使用 react-router,即使我只想检索 url 而不做任何其他事情?出于某种原因,访问 params.id 会导致 undefined.. 如果你不想使用react-router,你可以试试这个库:npmjs.com/package/query-string 我已经在使用它了.. 但问题是:如何从中获取单个值? 如果你使用query-string pacakge,它有一个.parse() 函数从URL 的查询字符串创建一个对象。所以,假设网址是?search=something?dog=cat。调用parse 方法后,您将拥有一个类似于以下 search: 'something', dog: 'cat' 的对象,您可以从需要它们的位置访问各个属性 出于某种原因,我使用的是查询字符串而不是查询字符串包。不确定是否有任何显着差异。现在,我将删除前一个并为此安装查询字符串......这可能是 ignoreQueryPrefix: true 参数按预期工作的原因。

以上是关于如何在 React JS 中读取组件内的 URL 参数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

React Js使用onChange将数组内的值更新到子组件

如何在 React js 中将道具传递给 API URL?

类组件内的 react-router-dom useParams()

如何在 react-native 中处理列表视图内的视频视图播放

react js中如何知道组件渲染情况

如何以正确的方式读取组件内的 redux 状态?