Я пытаюсь сделать таблицу в React и сделать строки кликабельными. Строки таблицы могут содержать ячейки с кнопками или другими интерактивными элементами, однако, если ячейка таблицы содержит интерактивный элемент, я не хочу, чтобы при щелчке элемента ячейки вызывалась функция rowClick.
По какой-то причине события распространяются в обратном направлении, чего я и ожидал. От родительского (Row) до дочернего (Cell), поэтому, когда я устанавливаю флажок в ячейке, порядок обратных вызовов onClick будет Row -> Checkbox.
Поскольку более специфичный обработчик onClick называется после функции onClick строки, я не смог отменить распространение события, как я изначально намеревался.
Я посмотрел документы MDN и отреагировал на события, но из того, что я могу сказать, событие должно выглядеть следующим образом. Cell -> Row
Я думал об использовании ссылки на строку и сравнении ее с целью, но мне не пришлось бы хранить ссылки для каждой видимой строки ...
Код строки:
<TableRow
key={keyedItem.key}
selected={this.isItemSelected(keyedItem.key)}
hover={true}
onClick={(event) => this.handleRowClicked(event, keyedItem)}
>
{this.renderCheckBox(keyedItem.key)}
{this.props.renderRowCells(keyedItem.item)}
</TableRow>
Функция renderCheckbox (key) сверху
private renderCheckBox(key: string) {
if (this.multiSelectionMode()) {
return (
<TableCell padding="checkbox">
<Checkbox
checked={this.isSelected(key)}
onChange={(event, checked: boolean) => { console.log(event.target); this.changeItemSelection(key, checked); }}
/>
</TableCell>
);
}
return null;
}
Кто-нибудь знает, что я могу здесь делать неправильно? Или это работает как задумано?