Вы можете сделать это так. В вашем state
объявите переменную, которая указывает на индекс панели, которую вы хотите отобразить как:
this.state = {
listOpen: 0,
};
Затем измените ваш метод toogleList
следующим образом:
toggleList(index){
this.setState({ listOpen: index })
}
И, наконец, измените JSX
на:
{this.state.customerDetails.data.map((customer, index) => (
<Panel bsStyle="info" key={customer.name}>
<Panel.Heading>
<Panel.Title componentClass="h3">{customer.name}</Panel.Title>
</Panel.Heading>
<Panel.Body>
<img src={require(`./sampleimages/${customer.image}.jpg`)} className="Customer-image" alt="image" />
<br line-height="110%"></br>
<p align="left">{customer.desc}</p>
{/* Toggle dropdown menu */}
<div className="image-cropper">
<button><img src={arrow} className="arrow-button" onClick={() => this.toggleList(index)} /></button>
{listOpen === index && <ul className="dd-list">
<li class="dropdown" className="dd-list-item" key={customer.name}>{customer.tip1}</li>
</ul>}
</div>
</PanelBody>
<Panel>
}
Надеюсь, это сработает для вас.