Я новичок в React и Boostrap, поэтому прошу прощения за мой базовый c вопрос. Я искал документацию, но могу найти только фрагменты, а не то, как все это должно быть вместе ie.
Я использую реагировать - bootstrap и сделал раскрывающийся список успешно.
У меня есть следующий компонент:
import React, { Component } from 'react';
import Dropdown from 'react-bootstrap/Dropdown';
class VesselDropdown extends Component {
constructor(props) {
super(props)
this.state = {
vessels:[]
}
}
componentDidMount() {
fetch('http://localhost:3001/get/vessels')
.then(res => res.json())
.then((data) => {
this.setState({
vessels: data,
test: 'xyz'
})
})
.catch(console.log)
}
render() {
console.log(this.state);
return (
<Dropdown>
<Dropdown.Toggle variant="success" id="dropdown-basic">
Select a Vessel
</Dropdown.Toggle>
<Dropdown.Menu>
{
this.state.vessels.map(d => {
return <Dropdown.Item href="#/{d.vesselimo}">{d.vesselname}</Dropdown.Item>
})
}
</Dropdown.Menu>
</Dropdown>
);
}
}
export default VesselDropdown;
Вопрос
Теперь мне нужно добавить функциональность действия.
- Как сделать щелчок на
Dropdown.Item
, вызвать другой компонент (VesselDetails
) и отобразить его вывод? Нужно ли поменять href
на предмете (на что)? - Как компонент
VesselDetails
получает переданный ему параметр (идентификатор судна vesselimo
)?
Спасибо
Дополнительная информация:
компонент VesselDetails
все еще находится в стадии разработки, но это то, что я до сих пор:
import React, { Component } from 'react';
import Table from 'react-bootstrap/Table';
class VesselDetails extends Component {
constructor(props) {
super(props)
this.state = {
}
}
componentDidMount() {
fetch('/get/latestcalls/:imo')
.then(res => res.json())
.then((data) => {
this.setState({
latestcalls : data
})
})
.catch(console.log)
}
render() {
return (
<div>
<h3>Port Calls</h3>
<Table striped bordered hover>
<thead>
<tr>
<th>#</th>
<th>Detail1</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Mark</td>
</tr>
</tbody>
</Table>
</div>
);
}
}
export default VesselDetails;