¿Cómo puedo definir una ruta en mi archivo routes.jsx para capturar el __firebase_request_keyvalor 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 :redirectParamno 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
qspodrí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.locationcon 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-domTuve que usarwithRouterpara hacer que esto funcionara!React Router v4
Utilizando
componentEl componente se procesa automáticamente con los accesorios de ruta.
Utilizando
renderLos accesorios de ruta se pasan a la función de renderizado.
fuente
query paramsURL 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.searchReact Router v4 y analizar los resultados usted mismo como se explica en mi respuesta a continuación.this.props.location.searchno 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.queryya no existe. En suthis.props.location.searchlugar, 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-stringbiblioteca.Racional
El equipo racional del React Router para eliminar la
querypropiedad 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.queryobjeto (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.searchfuente
{'?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 elwindowobjeto.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.paramses para parámetros de URL (segmento de URL con el prefijo ':' en el enrutador de reacción),props.location.queryalmacena 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
useLocationyuseParamsque 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 routera partir de la v4 en adelante ya no le daquery paramsdirectamente en sulocationobjeto. 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
withRouterdereact-routerigualcustomWithRouter.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_nametrabajará.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.searchque 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