Кажется, не удается найти много качественной документации по этому вопросу. В документации React Router v4 есть информация об объекте «история», но указано, что он изменчив и не должен изменяться. Многие примеры, которые я видел, кажутся «хаками». Любое понимание будет оценено.
Реагировать на маршрутизатор v4 программно изменить маршрут
comment
Здесь уже был дан ответ stackoverflow.com/questions/42672842/. Надеюсь, это поможет.
- person Todd Chaffee   schedule 07.04.2017
comment
@ToddChaffee А, понятно. Кажется, можно добавить новый маршрут в историю, но не доверять свойству местоположения объекта истории, поскольку оно изменчиво. Спасибо!
- person David N   schedule 07.04.2017
comment
Да, что ты сказал. По моему опыту, отправка нового маршрута с использованием объекта истории отлично работает.
- person Todd Chaffee   schedule 07.04.2017
Ответы (1)
Мне пришлось некоторое время бороться с этим, поскольку я сам новичок. Хотя ссылка, предоставленная @ToddChaffee, дает вам хорошее представление, эта тема подчеркивает что объект истории автоматически передается как реквизит, когда у вас есть <Router/>
в качестве компонента верхнего уровня. Это значительно упрощает загрузку объекта истории отдельно и с использованием метода createBrowserHistory()
.
Для меня работало следующее:
<Route exact path='/' render={({history}) =>
<Home infoHandler={this.handleUserInfo}
imageHandler={this.handleImage}
history={history}/>
}/>
Затем внутри компонента вы можете:
this.props.history.push('/routeYouWantToGoTo');
Не забудьте проверить свойство в вашем компоненте, прежде чем экспортировать модуль:
Home.propTypes = {
history: React.PropTypes.object
}
export default Home;
person
Julio Gudiño
schedule
11.04.2017