Я использую material-ui , и у меня есть таблица с кнопкой внутри. Кнопка открывает диалог, и мне нужно иметь возможность поддерживать щелчок по строке таблицы.
Проблема в том, что с порталами (в реакции) - события распространяются , поэтому щелкаем внутри диалогового окна ( который был открыт после нажатия на кнопку) - событие щелчка в строке таблицы будет запущено.
Это строка:
<TableRow onClick={rowClick}>
<TableCell>Content 1</TableCell>
<TableCell>Row clicked {count} times</TableCell>
<TableCell>
<MyDialog />
</TableCell>
</TableRow>
Это диалоговое окно:
<>
<IconButton onClick={handleClickOpen}>
<EditIcon />
</IconButton>
<Dialog disableBackdropClick open={open} onClose={handleClose}>
<DialogTitle>Dialog</DialogTitle>
<DialogContent>Some content</DialogContent>
<DialogActions>
<Button onClick={handleClose}>Cancel</Button>
<Button onClick={handleClose}>Save</Button>
</DialogActions>
</Dialog>
</>
Вот рабочий пример:
https://codesandbox.io/s/dazzling-hofstadter-gzwll
И это анимированный GIF-файл, который показывает проблему:
Я знаю, что могу установить «rowClick» для каждой ячейки (и оставить последнюю ячейку без нее), но это всего лишь пример, и я ищу более универсальное c решение.