Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

183
Views
How to get all query params using React-Router-DOM v6 `useSearchParams` without specifying the key?

I'm currently working on a React project with react-router-dom v6 and I want to get all of the query parameters.

http://localhost:3000/users?page=5&pageSize=25

I want to get both page and pageSize. I know that we can use this code below to get params with the keys.

import React from 'react'
import {useSearchParams} from "react-router-dom";

const Users = () => {

  const [searchParams, setSearchParams] = useSearchParams();

  const page = searchParams.get('page')
  const pageSize = searchParams.get('pageSize')


  return (<h1>page: {page}, pageSize: {pageSize}</h1>)
}

But, then I tried to get all params without specifying the keys by using searchparams.getAll() but it didn't work and the React app showed only a blank page.

Here is my code I used to get all params:

import React from 'react'
import {useSearchParams} from "react-router-dom";

const Users = () => {

  const [searchParams, setSearchParams] = useSearchParams();

  const params = searchParams.getAll();

  console.log(params)

  return (<h1>params</h1>)
}

Did I make any mistake there?

This is my dependencies on package.json:

  "dependencies": {
    ...,
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-router-dom": "^6.2.2",
    ...,
  },
about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

The URLSearchParams.getAll still takes a key and returns an array of all the values for that key.

let url = new URL('https://example.com?foo=1&bar=2');
let params = new URLSearchParams(url.search);

//Add a second foo parameter.
params.append('foo', 4);

console.log(params.getAll('foo')) //Prints ["1","4"].

You could use URLSearchParams.entries to return an iterator that can be used to push entries into an array of key/value pairs.

Example:

const Users = () => {
  const [searchParams, setSearchParams] = useSearchParams();

  const params = [];

  for(let entry of searchParams.entries()) {
    params.push(entry);
  }

  console.log(params); // [["page", 5], ["pageSize", 25]]

  return (
    <>
      <h1>Params</h1>
      <ul>
        {params.map(([key, value]) => (
          <li key={key}>{key} - {value}</li>
        ))}
      </ul>
    </>
  );
}

You could also use URLSearchParams.forEach to iterate and capture the key/value pairs.

Example:

const Users = () => {
  const [searchParams, setSearchParams] = useSearchParams();

  const params = [];

  searchParams.forEach((key, value) => {
    params.push([key, value]);
  });

  console.log(params); // [["page", 5], ["pageSize", 25]]

  return (
    <>
      <h1>Params</h1>
      <ul>
        {params.map(([key, value]) => (
          <li key={key}>{key} - {value}</li>
        ))}
      </ul>
    </>
  );
}

With either the .entries for-loop or .forEach method you could instead "reduce" into an object.

const params = {};

for(let [key, value] of searchParams.entries()) {
  params[key] = value;
}

-- or --

searchParams.forEach((key, value) => {
  params[key] = value;
});

console.log(params); // { page: 5, pageSize: 25 }

...

params.page; // 5
params.pageSize; // 25

This all said, it's probably still best to use the .get method and explicitly get the specific queryString parameters.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!