Estoy usando react y react-router para mi aplicación en el lado del cliente. Parece que no puedo averiguar cómo obtener los siguientes parámetros de consulta de una URL como:
http://xmen.database/search#/?status=APPROVED&page=1&limit=20
Mis rutas se ven así (el camino está totalmente equivocado, lo sé):
var routes = (
<Route>
<DefaultRoute handler={SearchDisplay}/>
<Route name="search" path="?status=:status&page=:page&limit=:limit" handler={SearchDisplay}/>
<Route name="xmen" path="candidate/:accountId" handler={XmenDisplay}/>
</Route>
);
Mi ruta funciona bien, pero no estoy seguro de cómo formatear la ruta para obtener los parámetros que quiero. ¡Aprecio cualquier ayuda en esto!
javascript
reactjs
client-side
react-router
client-side-scripting
Christopher Robin
fuente
fuente
getCurrentQuery
willTransitionTo
ganchos en su manejador. Recibe parámetros de cadena de consulta. github.com/rackt/react-router/commit/…Respuestas:
Nota: copiar / pegar del comentario. ¡Asegúrate de que te guste la publicación original!
Escribiendo en es6 y usando react 0.14.6 / react-router 2.0.0-rc5. Utilizo este comando para buscar los parámetros de consulta en mis componentes:
Crea un hash de todos los parámetros de consulta disponibles en la URL.
Actualizar:
Para React-Router v4, consulte esta respuesta . Básicamente, utilice
this.props.location.search
para obtener la cadena de consulta y analizar con elquery-string
paquete o URLSearchParams :fuente
query
parece haber desaparecido en React Router 4. github.com/ReactTraining/react-router/issues/…ANTIGUO (anterior a v4):
Escribiendo en es6 y usando react 0.14.6 / react-router 2.0.0-rc5. Utilizo este comando para buscar los parámetros de consulta en mis componentes:
Crea un hash de todos los parámetros de consulta disponibles en la URL.
ACTUALIZAR (React Router v4 +):
this.props.location.query en React Router 4 se ha eliminado (actualmente usa v4.1.1) más sobre el problema aquí: https://github.com/ReactTraining/react-router/issues/4410
Parece que quieren que use su propio método para analizar los parámetros de consulta, actualmente usando esta biblioteca para llenar el vacío: https://github.com/sindresorhus/query-string
fuente
TypeError: Cannot read property 'location' of undefined
:: |Las respuestas anteriores no funcionarán en
react-router v4
. Esto es lo que hice para resolver el problema:Primero instale la cadena de consulta que será necesaria para el análisis.
npm install -save query-string
Ahora, en el componente enrutado puede acceder a la cadena de consulta sin analizar como esta
this.props.location.search
Puede verificarlo iniciando sesión en la consola.
Finalmente analizar para acceder a los parámetros de consulta
Entonces, si la consulta es como
?hello=world
console.log(parsed.hello)
registraráworld
fuente
const query = new URLSearchParams(props.location.search); console.log(query.get('hello'));
(necesita polyfill para navegadores más antiguos).actualización 2017.12.25
"react-router-dom": "^4.2.2"
URL como
BrowserHistory
:http://localhost:3000/demo-7/detail/2?sort=name
HashHistory
:http://localhost:3000/demo-7/#/detail/2?sort=name
con dependencia de cadena de consulta :
resultados:
2 {sort: "name"} home
"react-router": "^2.4.1"
URL como
http://localhost:8080/react-router01/1?name=novaline&age=26
const queryParams = this.props.location.query;
queryParams es un objeto que contiene los parámetros de consulta:
{name: novaline, age: 26}
fuente
http://localhost:8090/#access_token=PGqsashgJdrZoU6hV8mWAzwlXkJZO8ImDcn&expires_in=7200&token_type=bearer
(es decir, no/
después#
) Entonces, para react enrutador v4, debe usar enlocation.hash
lugar delocation.search
Espero que ayude :)
¡Feliz codificación!
fuente
no necesita agregar ningún módulo adicional solo en su componente que tenga una dirección URL como esta:
http: // localhost: 3000 / # /? autoridad '
puedes probar el siguiente código simple:
fuente
Después de leer las otras respuestas (primero por @ duncan-finney y luego por @Marrs) me dispuse a encontrar el registro de cambios que explica la forma idiomática react-router 2.x de resolver esto. La documentación sobre el uso de la ubicación (que necesita para las consultas) en los componentes en realidad se contradice con el código real. Entonces, si sigue sus consejos, recibirá grandes advertencias enojadas como esta:
Resulta que no puede tener una propiedad de contexto llamada ubicación que use el tipo de ubicación. Pero puede usar una propiedad de contexto llamada loc que usa el tipo de ubicación. Entonces, la solución es una pequeña modificación en su fuente de la siguiente manera:
También puede transmitir solo las partes del objeto de ubicación que desea que sus hijos obtengan el mismo beneficio. No cambió la advertencia para cambiar al tipo de objeto. Espero que ayude.
fuente
Solución js simple:
Y puedes llamarlo desde cualquier lugar usando:
Espero que esto ayude.
fuente
Puede obtener el siguiente error al crear una compilación de producción optimizada al usar el módulo de cadena de consulta .
Para superar esto, utilice el módulo alternativo llamado stringquery que hace bien el mismo proceso sin problemas mientras ejecuta la compilación.
fuente