Я делаю простой список сотрудников и детальную демонстрацию в ReactJS. У меня есть компонент списка сотрудников, который показывает список всех выборок сотрудников из какого-то фиктивного веб-сервиса отдыха и показывает на странице.
class contactList extends Component {
constructor(props) {
super(props);
this.state = {
employees: [],
};
}
componentDidMount() {
this.EmployeeList();
}
EmployeeList() {
fetch('https://jsonplaceholder.typicode.com/comments')
.then(response => response.json())
.then(results => {
this.setState({ employees: results })
.catch(
error => { console.log(error); }
);
});
}
onDelete(e) {
}
render() {
console.log(this.state.employees);
const persons = this.state.employees.map((item, i) => (
<div>
<table>
<tbody>
<tr>
<td>
<Link to={"/Contactdetails/" + item.id} >{item.name}</Link>
<Route exact path={"/Contactdetails/:id"} component={Contactdetails}></Route>
</td>
<td>
<button onClick={this.onDelete}>
Delete
</button>
</td>
</tr>
</tbody>
</table>
{/* <Link to="/">Delete</Link> */}
</div>
));
return (
<div id="layout-content" className="layout-content-wrapper">
<div className="panel-list">{persons}</div>
</div>
);
}
Я показал все теги с соответствующим идентификатором (параметром) на странице. Проблема, когда я нажимаю на ссылку, это не приводит меня к странице подробностей. На странице с подробностями я также держал бдительность в методе рендеринга, но он также не появляется, поэтому я думаю, что страница с подробностями не получает вызов.
class Contactdetails extends Component {
constructor(props) {
super(props);
this.state = {
};
}
componentWillMount(){
alert("Helloo");
}
componentDidMount() {
console.log("props: ", this.props.match)
this.EmployeeDetails();
}
EmployeeDetails() {
fetch('http://dummy.restapiexample.com/api/v1/employees')
.then(response => response.json())
.then(results => { this.setState({ employees: results }) });
}
render() {
alert("Hello");
return (
<h2>Contact Details</h2>
)
}
};
Ссылка на StackBlitz:
https://stackblitz.com/edit/react-f4eha2?file=Contactdetails.js