admin管理员组文章数量:1287489
I am trying to get URL params in a React Native app.
What I tried to do:
- fails because searchParams is an empty list
const parsedUrl = new URL(url)
// here the searchParams are empty list
console.log(parsedUrl.searchParams)
- fails because the following error is shown:
[Error: not implemented]
const parsedUrl = new URLSearchParams(url)
console.log(parsedUrl.get(param))
I am trying to get URL params in a React Native app.
What I tried to do:
- fails because searchParams is an empty list
const parsedUrl = new URL(url)
// here the searchParams are empty list
console.log(parsedUrl.searchParams)
- fails because the following error is shown:
[Error: not implemented]
const parsedUrl = new URLSearchParams(url)
console.log(parsedUrl.get(param))
Share
Improve this question
edited Aug 16, 2021 at 15:22
MaartenDev
5,8115 gold badges22 silver badges35 bronze badges
asked Aug 16, 2021 at 15:18
spatakspatak
1,3894 gold badges18 silver badges32 bronze badges
3
- Could you provide an example url that contains values you want to acess? – MaartenDev Commented Aug 16, 2021 at 15:22
- myapp://?code=123123-1123123-418c-33213-123123 – spatak Commented Aug 16, 2021 at 15:47
- You should look into deep linking: reactnavigation/docs/deep-linking that is the way urls work on mobile devices and apps – MaartenDev Commented Aug 16, 2021 at 18:20
3 Answers
Reset to default 5You Can Try this:
( Only For React Js )
function getURLParams(parameterName, url) {
let name = parameterName.replace(/[\[\]]/g, '\\$&');
let regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url);
if (!results) return null;
if (!results[2]) return null;
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
// For Current Window URL
console.log(getURLParams("param1", window.location.href));
// For Custom URL
console.log(getURLParams("param1", "https://example./index.html?param1=Hello"));
Or This
( For React Native )
var url = "http://example.?param1=test¶m2=someData&number=123"
var regex = /[?&]([^=#]+)=([^&#]*)/g,
params = {},
match;
while (match = regex.exec(url)) {
params[match[1]] = match[2];
}
console.log(params)
const getSearchParamFromURL = (url, param) => {
const include = url.includes(param)
if (!include) return null
const params = url.split(/([&,?,=])/)
const index = params.indexOf(param)
const value = params[index + 2]
return value
}
const _url = 'myapp://?code=123123-1123123-418c-33213-123123¶m_key=param_value'
getSearchParamFromURL(_url, 'code') // output: 123123-1123123-418c-33213-123123
This is how I do in my custom Link.tsx
ponent in react-navigation 5:
export const Link = function Link({ to, action, target, onPress, children, params }: Props) {
const searchParams = new URLSearchParams(params as Record<string, string>)
return (
<DefaultLink
to={`${to.startsWith('/') ? to : `/${to}`}${params ? `?${searchParams.toString()}` : ''}`}
action={action}
target={target}
onPress={onPress}>
{children}
</DefaultLink>
)
}
If you are also using react-navigation, you can use pathConfig.parse
and pathConfig.stringify
to automatically convert the typing. getStateFromPath
|getPathFromState
本文标签: javascriptReact Nativeget url search paramsStack Overflow
版权声明:本文标题:javascript - React Native - get url search params - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741219477a2360689.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论