react querystring query from reactjs query-string react-router

reactjs - querystring - react url query params



Querystring en el enrutador de reacción (2)

Si está utilizando React Router v2.xx, puede acceder a los parámetros de consulta a través del objeto location.query que se pasa a su componente Route.

En otras palabras, puede volver a trabajar su ruta para que se vea como la siguiente:

<Route path="results" component={SearchResults} />

Y luego, dentro de su componente this.props.location.query.query1 , use this.props.location.query.query1 (similar para query2 y query3 ) para acceder a los valores de los parámetros de consulta.

EDIT: este sigue siendo el caso de React Router v3.xx.

Estoy tratando de establecer una ruta de ruta con una cadena de consulta. Algo en las líneas de:

www.mywebsite.com/results?query1=:query1&query2=:query2&query3=:query3

Me gustaría que la transición al componente "Resultados" de la siguiente manera:

<Route path="/" component={Main}> <IndexRoute component={Home} /> <Route path="results?query1=:query1&query2=:query2&query3=:query3" component={SearchResults} /> </Route>

En el contenedor SearchResults me gustaría poder tener acceso a los parámetros query1, query2 y query3.

No he podido hacerlo funcionar. Obtuve el siguiente error:

bundle.js: 22627 Advertencia: [reaccion-enrutador] La ubicación "/ results? query1 = 1 & query2 = 2 & query3 = 3" no coincide con ninguna ruta

Intenté seguir los pasos de la siguiente guía: (Sección: ¿Qué pasa con los parámetros de cadena de consulta?) https://www.themarketingtechnologist.co/react-router-an-introduction/

¿Puedo obtener ayuda aquí?


Si está utilizando React Router> = v4 location.query ya no está disponible. Puede conectar una biblioteca externa (como https://www.npmjs.com/package/query-string ), o usar algo como esto:

const search = props.location.search; // could be ''?foo=bar'' const params = new URLSearchParams(search); const foo = params.get(''foo''); // bar

(solo tenga en cuenta que URLSearchParams() no es compatible con Internet Explorer)