Estou tendo um pequeno problema ao migrar do React-Router v3 para v4. na v3, consegui fazer isso em qualquer lugar:
import { browserHistory } from 'react-router';
browserHistory.push('/some/path');
Como faço para conseguir isso na v4.
Eu sei que poderia usar o hoc withRouter
, o contexto de reação ou os adereços do roteador de evento quando você estiver em um componente. mas não é o meu caso.
Estou procurando a equivalência de NavigatingOutsideOfComponents na v4
reactjs
react-router
storm_buster
fonte
fonte
Respostas:
Você só precisa ter um módulo que exporte um
history
objeto. Em seguida, você importaria esse objeto em todo o projeto.Então, em vez de usar um dos roteadores embutidos, você usaria o
<Router>
componente.fonte
createHashHistory
se você estiver usandoHashRouter
.Isso funciona! https://reacttraining.com/react-router/web/api/withRouter
fonte
this.props.history.push('/some_route');
para que funcione.const Component = props => {... // stuff}
eexport default withRouter(Component)
funciona para mim em um componente sem estadoSemelhante a uma resposta aceita, o que você poderia fazer é usar
react
ereact-router
se fornecer a vocêhistory
objeto que você pode acessar em um arquivo e depois exportar.history.js
Mais tarde, você importa o componente e monta para inicializar a variável de histórico:
E então você pode simplesmente importar em seu aplicativo quando ele tiver sido montado:
Eu até fiz um pacote npm que faz exatamente isso.
fonte
Se você estiver usando redux e redux-thunk a melhor solução será usar react-router-redux
fonte
Com base nesta resposta, se você precisar do objeto de histórico apenas para navegar para outro componente:
fonte
Em App.js
Então, em um componente filho:
fonte
No caso específico de
react-router
, usarcontext
é um cenário de caso válido, por exemploVocê pode acessar uma instância do histórico por meio do contexto do roteador, por exemplo
this.context.router.history
.fonte