URL: https://n9hon.csb.app?name=netflix&url=https://localhost?apikey=123&code=321
code:
import { useLocation } from "react-router-dom";
function useQuery() {
const {search} = useLocation();
const query = new URLSearchParams(search);
console.log('name: ', query.get('name'))
console.log('url: ', query.get('url'))
return query
}
Output:
name: netflix
url: https://localhost?apikey=123
As you can see, the code
parameter is lost. I expect the value of url
parameter should be https://localhost?apikey=123&code=321
.
package version:
"react-router-dom": "5.2.0"
This happens because you haven't encoded the URI components. you can use
encodeURIComponent
anddecodeURIComponent
functions to solve your problem. Before push to the route encode the URL and after receiving you can decode it.Note: Please consider that decoding is not necessary because,
new URLSearchParams(search).get('key')
command will automatically decode the component.