У меня возникла небольшая проблема с переходом с React-Router v3 на v4. в v3 я мог делать это где угодно:
import { browserHistory } from 'react-router';
browserHistory.push('/some/path');
Как мне добиться этого в v4.
Я знаю, что могу использовать свойства hoc withRouter
, контекста реакции или маршрутизатора событий, когда вы находитесь в компоненте. но для меня это не так.
Я ищу эквивалент NavigatingOutsideOfComponents в v4
reactjs
react-router
storm_buster
источник
источник
Ответы:
Вам просто нужен модуль, который экспортирует
history
объект. Затем вы должны импортировать этот объект в свой проект.Затем вместо использования одного из встроенных маршрутизаторов вы должны использовать
<Router>
компонент.источник
createHashHistory
если вы использовалиHashRouter
.Это работает! https://reacttraining.com/react-router/web/api/withRouter
источник
this.props.history.push('/some_route');
чтобы это работало.const Component = props => {... // stuff}
иexport default withRouter(Component)
работает для меня над компонентом без сохранения состоянияПо аналогии с принятым ответом вы могли бы использовать
react
иreact-router
сам, чтобы предоставить вамhistory
объект, который вы можете указать в файле, а затем экспортировать.history.js
Позже вы импортируете компонент и монтируете его для инициализации переменной истории:
А затем вы можете просто импортировать в свое приложение, когда оно было смонтировано:
Я даже сделал и пакет npm, который делает именно это.
источник
Если вы используете redux и redux-thunk, лучшим решением будет использовать response-router-redux
источник
Основываясь на этом ответе, если вам нужен объект истории только для перехода к другому компоненту:
источник
В App.js
Затем в дочернем компоненте:
источник
В конкретном случае
react-router
использованиеcontext
является допустимым сценарием, напримерВы можете получить доступ к экземпляру истории через контекст маршрутизатора, например
this.context.router.history
.источник