Просто передайте ключ в качестве параметра. Либо сделайте это встроенным образом, как это:
onToggle={(isDropdownOpen) => this.onDropdownToggle(key, isDropdownOpen)}
Или вы можете сделать это так:
this.onDropdownToggle = key => isDropdownOpen => {
...
}
...
onToggle={this.onDropdownToggle(key)}
Затем вы можете использовать один обработчик для изменения каждой карты.
Вы должны будете использовать вычисленное имя свойства, когда настройки состояния
this.setState({
[key]: isDropdownOpen
});
Окончательный результат:
// One toggle function that uses the key to update state
this.onDropdownToggle = (key, isDropdownOpen) => {
this.setState({
[key]: isDropdownOpen
});
};
// One dropdown select function that uses the key to update state
this.onDropdownSelect = (key, event) => {
this.setState({
[key]: !this.state[key]
});
};
...
<Dropdown
isPlain
position="right"
onSelect={(e) => this.onDropdownSelect(key,e)}
toggle={
<KebabToggle
onToggle={(isDropdownOpen) => this.onDropdownToggle(key, isDropdownOpen)} />}
isOpen={this.state[key]}
dropdownItems={kebabDropdownItems}
/>
Вы также можете рассмотреть возможность использования item.name
вместо ключа для перехода к функции. Но только если они всегда уникальны.