¿Cómo puedo definir una ruta en mi archivo routes.jsx para capturar el __firebase_request_key
valor del parámetro de una URL generada por el proceso de inicio de sesión único de Twitter después de la redirección desde sus servidores?
http://localhost:8000/#/signin?_k=v9ifuf&__firebase_request_key=blablabla
Intenté con la siguiente configuración de rutas, pero :redirectParam
no está captando el parámetro mencionado:
<Router>
<Route path="/" component={Main}>
<Route path="signin" component={SignIn}>
<Route path=":redirectParam" component={TwitterSsoButton} />
</Route>
</Route>
</Router>
reactjs
react-router
Franco
fuente
fuente
query strings
"? var1 = val & var2 = val2",: "url paramters
/ photos /: companyiD / new"Respuestas:
React Router v3
React Router ya analiza la ubicación por usted y la pasa a su RouteComponent como accesorios. Puede acceder a la parte de consulta (¿después? En la url) a través de
Si está buscando los valores de los parámetros de ruta, separados por dos puntos (:) dentro del enrutador, puede acceder a ellos mediante
Esto se aplica a las últimas versiones de React Router v3 (no estoy seguro de cuál). Se informó que las versiones anteriores del enrutador usaban
this.props.params.redirectParam
.React Router v4 y React Router v5, genérico
React Router v4 ya no analiza la consulta por usted, pero solo puede acceder a ella a través de
this.props.location.search
. Por razones, consulte la respuesta de nbeuchat .Por ejemplo, con la biblioteca qs importada como
qs
podrías hacerOtra biblioteca sería query-string . Consulte esta respuesta para obtener más ideas sobre cómo analizar la cadena de búsqueda. Si no necesita compatibilidad con IE, también puede usar
Para componentes funcionales que reemplazaría
this.props.location
con el gancho useLocation . Tenga en cuenta que puede usarwindow.location.search
, pero esto no permitirá activar la representación de React en los cambios. Si su componente (no funcional) no es un hijo directo de unaSwitch
, debe usar withRouter para acceder a cualquiera de los accesorios provistos por el enrutador.General
Sugerencia de nizam.sp para hacer
Será útil en cualquier caso.
fuente
console.dir()
debido a una nota de advertencia ... al menos :)react-router-dom
Tuve que usarwithRouter
para hacer que esto funcionara!React Router v4
Utilizando
component
El componente se procesa automáticamente con los accesorios de ruta.
Utilizando
render
Los accesorios de ruta se pasan a la función de renderizado.
fuente
query params
URL actual de mi aplicación en un componente secundario usando React Router v4. Si está buscando elquery params
, this.props.location.query en React Router 4 se ha eliminado (actualmente usando v4.1.1). Vea esta respuesta: stackoverflow.com/a/43630848/1508105/users/?q=...
pero podría tener/user?q=...
. Debe usarthis.props.location.search
React Router v4 y analizar los resultados usted mismo como se explica en mi respuesta a continuación.this.props.location.search
no existe.React Router v3
Con React Router v3, puede obtener una cadena de consulta de
this.props.location.search
(? Qs1 = naisarg & qs2 = parmar). Por ejemplo, conlet params = queryString.parse(this.props.location.search)
, daría{ qs1 : 'naisarg', qs2 : 'parmar'}
React Router v4
Con React Router v4, el
this.props.location.query
ya no existe. En suthis.props.location.search
lugar, debe usar y analizar los parámetros de consulta usted mismo o usando un paquete existente comoquery-string
.Ejemplo
Aquí hay un ejemplo mínimo con React Router v4 y la
query-string
biblioteca.Racional
El equipo racional del React Router para eliminar la
query
propiedad es:Puedes encontrar la discusión completa en GitHub .
fuente
Hasta donde sé, hay tres métodos para hacerlo.
1.utilice la expresión regular para obtener la cadena de consulta.
2.Puedes usar la API del navegador. imagen, la url actual es así:
solo queremos obtener 123;
primero
Entonces
3. use una tercera biblioteca llamada 'query-string'. Primero instálalo
Luego impórtelo al archivo javascript actual:
El siguiente paso es obtener 'token' en la url actual, haga lo siguiente:
Espero eso ayude.
Actualizado el 25/02/2019
http://www.google.com.au?app=home&act=article&aid=160990
Definimos una función para obtener los parámetros:
Podemos obtener 'ayuda' de la siguiente manera:
fuente
React Router v4 ya no tiene el
props.location.query
objeto (ver discusión de github ). Por lo tanto, la respuesta aceptada no funcionará para proyectos más nuevos.Una solución para v4 es usar una cadena de consulta de biblioteca externa para analizar el
props.location.search
fuente
{'?foo': 'bar'}
var prefixed = qs.parse('?a=b&c=d', { ignoreQueryPrefix: true });
debería arreglarlo. Ejemplo encontrado aquí: github.com/ljharb/qsCuando se usan los ganchos React no hay acceso a acceso
this.props.location
. Para capturar los parámetros de la URL, use elwindow
objeto.fuente
React Router v4
Tenga en cuenta que actualmente es experimental.
Verifique la compatibilidad del navegador aquí: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/URLSearchParams#Browser_compatibility
fuente
puede verificar el enrutador de reacción , de manera simple, puede usar el código para obtener el parámetro de consulta siempre que lo haya definido en su enrutador:
fuente
props.params
es para parámetros de URL (segmento de URL con el prefijo ':' en el enrutador de reacción),props.location.query
almacena parámetros de cadena de consulta (después de '?') y es lo que quiere OP.React Router 5.1+
5.1 introdujo varios ganchos como
useLocation
yuseParams
que podrían ser útiles aquí.Ejemplo:
Entonces si visitamos decir
Podrías recuperarlo como
fuente
Si su enrutador es así
Obtendrá esa identificación como esta
fuente
Con este one-liner, puede usarlo en cualquier lugar tanto en React Hook como en React Class Component con JavaScript simple.
https://www.hunterisgod.com/?city=Leipzig
fuente
Si no está obteniendo el
this.props
... que esperaba según las otras respuestas, es posible que deba usarwithRouter
( docs v4 ):fuente
Me costó mucho resolver este problema. Si ninguno de los anteriores funciona, puede probar esto en su lugar. Estoy usando la aplicación create-react-app
Requisitos
react-router-dom ":" ^ 4.3.1 "
Solución
En la ubicación donde se especifica el enrutador
Agregue el nombre del parámetro que le gustaría pasar de esta manera
En la página donde está renderizando algunos / ruta puede especificar esto para ver el nombre del parámetro id de llamada como este
Al final donde exportas por defecto
Recuerde incluir importación
Cuando console.log (this.props), podrá saber qué se ha transmitido. ¡Que te diviertas!
fuente
RouteComponentProps<{id: number}>
React router
a partir de la v4 en adelante ya no le daquery params
directamente en sulocation
objeto. La razón esUna vez incluido eso, tendría más sentido simplemente analizar location.search en los componentes de la vista que esperan un objeto de consulta.
Puede hacer esto genéricamente anulando el
withRouter
dereact-router
igualcustomWithRouter.js
fuente
fuente
Tal vez un poco tarde, pero este gancho de reacción puede ayudarlo a obtener / establecer valores en la consulta de URL: https://github.com/rudyhuynh/use-url-search-params (escrito por mí).
Funciona con o sin
react-router
. A continuación se muestra el código en su caso:fuente
this.props.params.your_param_name
trabajará.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.fuente
En el componente donde necesita acceder a los parámetros que puede usar
this.props.location.state.from.search
que revelará toda la cadena de consulta (todo después del
?
signo)fuente
Digamos que hay una url de la siguiente manera
Si queremos extraer el código de esa URL, el siguiente método funcionará.
fuente
En React Router v4 solo conRoute es la forma correcta
Puede obtener acceso a las propiedades del objeto de historial y la coincidencia más cercana a través del componente de orden superior withRouter. withRouter pasará los accesorios de coincidencia, ubicación e historial actualizados al componente empaquetado siempre que se procese.
https://reacttraining.com/react-router/web/api/withRouter
fuente
Usé un paquete externo llamado query-string para analizar el parámetro url de esta manera.
fuente
Cuando trabaje con react route dom, vaciará el objeto con for match, pero si hace el siguiente código, lo hará para el componente es6 y funciona directamente para el componente de función
De esta forma, puedes obtener accesorios y combinar parámetros e ID de perfil
Esto funcionó para mí después de mucha investigación sobre el componente es6.
fuente
O tal vez algo como esto?
fuente
Puede crear un enlace simple para extraer parámetros de búsqueda de la ubicación actual:
entonces podría usarlo dentro de su componente funcional así:
fuente
fuente
fuente
La solución más simple!
en enrutamiento:
en código de reacción:
fuente