У меня есть структура URL, такая как
foo.com/details/:id
, и я использую ReactRouter.Если вы выполняете поиск по идентификатору «123», компонент выводит конкретную информацию из базы данных и обновляет URL-адрес до
foo.com/details/123
Если вы ищете другой идентификатор «456», URL-адресобновляется до
foo.com/details/456
с короткими словами this.props.history.push(${this.state.id});
- компонент перерисовывается.Если вы перезагрузите или перейдете непосредственно к идентификатору с URL-адресом, параметр будет работать так, как ожидалось.Но вот мой вопрос: если вы нажмете кнопку «Назад» в браузере, URL обновится правильно (456 => 123), но компонент не выполнит повторную визуализацию.
Как заставить компонент выполнитьперерисовать при изменении параметра URL?
РЕДАКТИРОВАТЬ: больше кода
В конструкторе:
if (this.props.match.params.id !== undefined) {
this.state.id = this.props.match.params.id;
this.getData(this.state.id)
}
В классе:
<form onSubmit={this.handleSubmit}>
<input type="text" className="form-control mx-sm-3 mb-2" placeholder="Enter ID"value=
{this.state.id} onChange={this.handleChange}/>
<input type="submit" value="Search" className="btn btn-primary mb-2"/>
</form>
handleChange(event) {
this.setState({id: event.target.value})
}
handleSubmit(event) {
this.props.history.push(`${this.state.id}`);
this.getData(this.state.id);
event.preventDefault();
}