Я новичок в ReactJS. Я хотел бы спросить, как правильно обновлять компонент при изменении параметра URL.
Мой код просто не обновляет компонент CustomerDetails
при изменении URL-адреса с customer/1
на customer/2
.
import React from "react";
import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom";
import { CustomerList } from "./components/Customer/List";
import { CustomerDetails } from "./components/Customer/Details";
export class App extends React.Component<{}> {
render(): React.ReactNode {
return (
<Router>
<div>
<nav>
<li>
<Link to="/customer">User list</Link>
</li>
<li>
<Link to="/customer/1">Test Customer details 1</Link>
</li>
<li>
<Link to="/customer/2">Test Customer Details 2</Link>
</li>
</nav>
<Switch>
<Route path="/customer/:customerId" component={CustomerDetails} />
<Route path="/customer" component={CustomerList} />
</Switch>
</div>
</Router>
);
}
}
Мой компонент класса CustomerDetails
выглядит следующим образом.
import * as React from "react";
import { RouteComponentProps } from "react-router-dom";
export interface CustomerDetailsParams {
customerId: string;
}
export interface CustomerDetailsProps extends RouteComponentProps<CustomerDetailsParams> {
}
export interface CustomerDetailsState {
customerId: string;
}
export class CustomerDetails extends React.Component<CustomerDetailsProps, CustomerDetailsState> {
constructor(props: CustomerDetailsProps) {
super(props);
const params: CustomerDetailsParams = props.match.params;
this.state = {
customerId: params.customerId
};
}
render(): React.ReactNode {
return (
<div className="customer-detail">
<h2>customer details id: {this.state.customerId}</h2>
</div>
);
}
}
Почему компонент Route
не воссоздает компонент CustomerDetails
? Как это работает? Это не работает, когда я переключаюсь только между ссылками customer/1
и customer/2
.
Я использую react-router-dom@5.1.2
, react@16.12.0
, react-dom@16.12.0