¿Cómo podemos pasar el parámetro con this.props.history.push('/page')
React-Router v4?
.then(response => {
var r = this;
if (response.status >= 200 && response.status < 300) {
r.props.history.push('/template');
});
reactjs
react-router
IshanGarg
fuente
fuente
Route
debe tener acceso athis.props.location
,this.props.history
, etc. Creo que no es necesario utilizarref
más con v4. Intenta hacerlothis.props.history.push('/template');
props
al componente que coincide con la ruta? Creo que este hilo de GitHub aborda su preocupación.Respuestas:
En primer lugar, no necesita hacer
var r = this;
esto enif statement
refiere al contexto de la devolución de llamada en sí, que como está utilizando la función de flecha se refiere al contexto del componente Reaccionar.Según los documentos:
Entonces, mientras navegas, puedes pasar accesorios al objeto de historia como
o de manera similar para el
Link
componente o elRedirect
componentey luego en el componente que se representa con la
/template
ruta, puede acceder a los accesorios pasados comoTambién tenga en cuenta que, al usar el historial o los objetos de ubicación de accesorios, debe conectar el componente
withRouter
.Según los documentos:
fuente
this.props.history.push('/template',response.data)
no funciona. Según los documentos depush(path, [state])
, ¿no crees que debería funcionar?puedes usar,
this.props.history.push("/template", { ...response })
othis.props.history.push("/template", { response: response })
entonces puede acceder a los datos analizados desde el
/template
componente siguiendo el código,const state = this.props.location.state
Leer más sobre React Session History Management
fuente
Para las versiones anteriores :
Y obtenga los datos en el componente relacionado al igual que a continuación:
Para las versiones más nuevas , la forma anterior funciona bien, pero hay una nueva forma:
Y obtenga los datos en el componente relacionado al igual que a continuación:
Sugerencia : el
state
nombre de la clave se usó en las versiones anteriores y para las versiones más nuevas, puede usar su nombre personalizado para pasar datos y usar elstate
nombre no es esencial.fuente
Extender la solución (sugerida por Shubham Khatri) para usar con ganchos React (16.8 en adelante):
Pasando parámetros con historial de empuje:
Accediendo al parámetro pasado usando useLocation desde 'react-router-dom':
fuente
Si necesita pasar parámetros de URL
hay una gran explicación de publicación de Tyler McGinnis en su sitio, Enlace a la publicación
Aquí hay ejemplos de código:
en el componente history.push:
this.props.history.push(`/home:${this.state.userID}`)
en el componente del enrutador define la ruta:
<Route path='/home:myKey' component={Home} />
en el componente de inicio:
fuente
No es necesario usar con Router. Esto funciona para mi:
En tu página principal,
Luego, en Componente A o Componente B puede acceder
objeto, incluido el método this.props.history.push.
fuente
withRouter
porque envolviste tu componenteBrowserRouter
, que funciona igual.props
a cada componente que incluye elhistory
accesorio.Para usar React 16.8+ (con ganchos) puede usar de esta manera
Fuente aquí para leer más https://reacttraining.com/react-router/web/example/auth-workflow
fuente
Agregue información para obtener parámetros de consulta.
Para obtener más información sobre URLSearchParams, consulte este enlace URLSearchParams
fuente