Реагировать на маршрутизатор v4 программно изменить маршрут

Кажется, не удается найти много качественной документации по этому вопросу. В документации React Router v4 есть информация об объекте «история», но указано, что он изменчив и не должен изменяться. Многие примеры, которые я видел, кажутся «хаками». Любое понимание будет оценено.


person David N    schedule 07.04.2017    source источник
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