Cómo obtener el valor del parámetro de la cadena de consulta
¿Cómo puedo definir una ruta en mi archivo routes.jsx para capturar el valor del parámetro __firebase_request_key
de una URL generada por el proceso de inicio de sesión único de Twitter tras la redirección desde sus servidores?
http://localhost:8000/#/signin?_k=v9ifuf&__firebase_request_key=blablabla
Lo he intentado con la siguiente configuración de rutas, pero el :redirectParam
no captura el mencionado parámetro:
<Router>
<Route path="/" component={Main}>
<Route path="signin" component={SignIn}>
<Route path=":redirectParam" component={TwitterSsoButton} />
</Route>
</Route>
</Router>
320
3
React Router v3
React Router ya analiza la ubicación por ti y la pasa a tu RouteComponent como props. Puedes acceder a la parte de la consulta (después de ? en la url) a través de
Si buscas los valores de los parámetros de la ruta, separados con dos puntos (:) dentro del router, estos son accesibles a través de
Esto se aplica a las últimas versiones de React Router v3 (no estoy seguro de cuál). Las versiones anteriores del enrutador fueron reportadas para usar
this.props.params.redirectParam
.React Router v4 y React Router v5
React Router v4 ya no analiza la consulta por ti, sino que sólo puedes acceder a ella a través de
this.props.location.search
. Para ver las razones, consulte nbeuchat's answer.Por ejemplo, con la librería query-string importada como
qs
podrías hacerVer esta respuesta para algunas ideas más sobre el análisis de la cadena de búsqueda.
Además, si su componente no es un hijo directo de un
Switch
necesita usar withRouter para acceder a cualquiera de los props proporcionados por el router.**Generalidades
nizam.sp's sugerencia de hacer
será útil en cualquier caso.
puede comprobar el react-router, en simple, puede utilizar el código para obtener el parámetro de consulta, siempre y cuando se define en su router:
this.props.params.your_param_name
funcionará.Esta es la forma de obtener los parámetros de su cadena de consulta; Por favor, haz
console.log(this.props);
para explorar todas las posibilidades.