Alguacil
Puedo ver en este archivo (https://github.com/ReactTraining/react-router/blob/v0.13.3/modules/createRouter.js) que hay una función de actualización pero no tengo idea de cómo llamarla. Soy bastante nuevo en el enrutador de reacción, solo lo he usado para moverme entre algunas páginas un par de veces usando hashHistory.
En este momento, estoy tratando de usarlo para que cuando falle una instalación, el usuario tenga la opción de ‘reintentar’, que planeo ejecutar actualizando la página donde ocurre la instalación (la página en la que el usuario estaría actualmente). Cualquier ayuda sería apreciada.
Esta es una aplicación de nodo que se ejecuta en electrones, no en una aplicación web.
sambalicioso
en primer lugar, agregue react-router como una dependencia
`yarn add react-router` or `npm install react-router`
import { useHistory } from 'react-router'
const history = useHistory()
/////then add this to the function that is called for re-rendering
history.go(0)
Esto hace que su página se vuelva a renderizar automáticamente
Para el enrutador de reacción V6, use el enlace useNavigate en su lugar
import { useNavigate } from 'react-router'
const navegar = useNavegar()
navegar(0)
-
esto funciona si tiene una cookie que se elimina en un evento onClick que maneja su estado de autenticación, con
history.go()
Me desconecto según lo previsto y me empujan a la pantalla de inicio de sesión. No funcionó según lo previsto para mí con las otras respuestas …– Lucas Reppe Welander
8 de junio de 2020 a las 9:10
-
No es realmente un enfoque SPA. Creo que esta recomendación debe ser criticada.
– Ott
31 oct 2021 a las 18:43
-
Estoy creando una aplicación web con React y Express.js, y esta sugerencia me funcionó de maravilla. Salud
– Giovanni Pizzato
17 de noviembre de 2021 a las 12:30
-
No funciona con react-router v6 (probado
navigate(0)
).– Andrei
29 de julio de 2022 a las 8:26
Si está utilizando react-router v6
import { useNavigate } from "react-router-dom";
const navigate = useNavigate();
const refreshPage = () => {
navigate(0);
}
sumit kumar
Puede usar esto para actualizar la ruta actual:
import createHistory from 'history/createBrowserHistory'
const history = createHistory();
history.go(0)
-
esto hace que se vuelva a cargar la página completa
– Alexey L.
20 de noviembre de 2019 a las 14:21
-
Algo similar si está usando ganchos: esto funciona para useHistory de react-router-dom. Pero sí, recargar completamente la página
– Julian
5 de agosto de 2021 a las 20:01
Realmente no necesitas react-router
para esto. solo puedes usar location.reload
:
location.reload();
Además, la versión de react-router a la que se vinculó es muy antigua, creo que se está vinculando a v1 cuando actualmente está en v4.
darko pranjic
Supongo que estás usando react-router. Copio mi respuesta de otro post. Entonces, tiene pocas posibilidades de hacerlo, actualmente mi forma favorita de hacerlo es usar la función anónima en el componente prop:
<Switch>
<Route exact path="https://stackoverflow.com/" component={()=><HomeContainer/>} />
<Route exact path="/file/:itemPath/:refHash" component={()=><File/>} />
<Route exact path="/:folderName" component ={()=><Folder/>}/>
</Switch>
O si desea actualizar con los parámetros de URL actuales, necesitará una ruta adicional (recargar) y jugar un poco con la pila del enrutador:
reload = ()=>{
const current = props.location.pathname;
this.props.history.replace(`/reload`);
setTimeout(() => {
this.props.history.replace(current);
});
}
<Switch>
<Route path="/reload" component={null} key="reload" />
<Route exact path="https://stackoverflow.com/" component={HomeContainer} />
<Route exact path="/file/:itemPath/:refHash" component={File} />
<Route exact path="/:folderName" component ={Folder}/>
</Switch>
<div onClick={this.reload}>Reload</div>
-
Por que es
setTimeout
requerido aquí?– Dawson B.
29 de agosto de 2019 a las 18:34
-
@DawsonB No lo sé, pero no funciona sin él… jajaja
– Newoda
30 sep 2020 a las 16:57
ahmetsadri
Reaccionar
window.location.reload();
laboral
-
Por que es
setTimeout
requerido aquí?– Dawson B.
29 de agosto de 2019 a las 18:34
-
@DawsonB No lo sé, pero no funciona sin él… jajaja
– Newoda
30 sep 2020 a las 16:57
SaimumIslam27
si desea volver a obtener los datos, simplemente haga lo siguiente:
import { useLocation } from 'react-router'
const location = useLocation()
useEffect(() => {
fetchData()
}, [location.key])
-
dulce solución!
– lloyd agola
4 de abril de 2022 a las 12:57