J'ai un petit problème lors de la migration de React-Router v3 vers v4. dans la v3, j'ai pu le faire n'importe où:
import { browserHistory } from 'react-router';
browserHistory.push('/some/path');
Comment puis-je y parvenir dans la v4.
Je sais que je pourrais utiliser, le hoc withRouter
, le contexte de réaction ou les accessoires de routeur d'événements lorsque vous êtes dans un composant. mais ce n'est pas le cas pour moi.
Je recherche l'équivalence de NavigatingOutsideOfComponents en v4
reactjs
react-router
storm_buster
la source
la source
Réponses:
Vous avez juste besoin d'un module qui exporte un
history
objet. Ensuite, vous importeriez cet objet tout au long de votre projet.Ensuite, au lieu d'utiliser l'un des routeurs intégrés, vous utiliseriez le
<Router>
composant.la source
createHashHistory
si vous utilisiezHashRouter
.Cela marche! https://reacttraining.com/react-router/web/api/withRouter
la source
this.props.history.push('/some_route');
pour que cela fonctionne.const Component = props => {... // stuff}
etexport default withRouter(Component)
travaille pour moi sur un composant sans étatDe même que la réponse acceptée, vous pouvez utiliser
react
etreact-router
lui - même pour vous fournir unhistory
objet que vous pouvez définir dans un fichier, puis exporter.history.js
Vous importez ensuite le composant et le montez pour initialiser la variable d'historique:
Et puis vous pouvez simplement importer dans votre application une fois qu'elle a été montée:
J'ai même créé un package npm qui fait exactement cela.
la source
Si vous utilisez redux et redux-thunk, la meilleure solution sera d'utiliser react-router-redux
la source
En vous basant sur cette réponse si vous avez besoin d'un objet d'historique uniquement pour accéder à un autre composant:
la source
Dans App.js
Puis dans un composant enfant:
la source
Dans le cas spécifique de
react-router
, l'utilisationcontext
est un scénario valable, par ex.Vous pouvez accéder à une instance de l'historique via le contexte du routeur, par exemple
this.context.router.history
.la source