Я создаю небольшое веб-приложение с 2 страницами в React Js.На моей домашней странице отображается список городов, которые я загружаю из REST API через Axios.
Моя задача - щелкнуть по любому городу и получить его название.Когда я нажимаю на название любого города, маршрут меняется в адресной строке с добавлением определенного идентификатора города, но этот компонент с названием города не отображается.Когда я перезагружаю страницу, она показывает название этого конкретного города, а затем она работает совершенно нормально.
Что я должен сделать, чтобы она работала правильно без перезагрузки страницы вручную?
Послемой фрагмент кода для проблемы:
Компонент приложения (маршрут):
<BrowserRouter>
<div className="App">
<Header />
<Switch>
<Route exact path="/" component={Home} />
<Route path="/login" component={Login} />
<Route path="/:city_id" component={SecondTable} />
</Switch>
</div>
</BrowserRouter>
Домашний компонент:
class Home extends Component {
state = {
cities: [],
name: ""
};
async componentDidMount() {
await axios.get("http://100.124.69.3:8080/api/v1/cities").then(res => {
this.setState({ cities: res.data });
console.log(res);
});
console.log(this.state.cities);
}
render() {
let postList = this.state.cities.map(city => {
return (
<div key={city.id}>
<p>
<BrowserRouter>
<Link to={"/" + city.id}>{city.name}</Link>
</BrowserRouter>
</p>
</div>
);
});
return (
<div className="align">
All Facilities (NCAL)
<div className="Modal1">{postList}</div>
</div>
);
}
}
SecondTable Компонент: (Где я хочу отобразитьназвание города)
class SecondTable extends Component {
state = {
data: [(visible: false), (city: null)]
};
async componentDidMount() {
console.log(this.props);
let id = this.props.match.params.city_id;
await axios
.get("http://100.124.69.3:8080/api/v1/cities/" + id)
.then(res => {
this.setState({ city: res.data.name });
console.log(res);
});
console.log(this.state.city);
}
render() {
return <div className="align1">{this.state.city}</div>;
}
}