@paoluccio

Как в родителе узнать, что удалённый дочерний компонент принадлежал именно ему?

Всем доброго дня.

В навбаре есть иконка открывающая дропдаун по клику. Дропдаун, после открытия, отрисовывает все внутренности и устанавливает слушалку на клики в своём useEffect'е. Клик извне - закрываем дроп, клик внутри - молчим.
Внутренности дропа это, к примеру, некие карточки товаров. Каждая такая карточка имеет возможность самоликвидироваться по клику на крестик.
Проблема в том, что после удаления карточки, сначала происходит перерисовка всего дропа(т.е. без удалённого елемента) и только в самом конце отрабатывает родительская слушалка, которая, разумеется, схлопывает дроп, думая что клик произошел извне, т.к. фактически элемента уже нет в дропе.

Как бы так исхитриться и объяснить слушалке не схлопывать дроп после удаления карточки?

Единственное, что пришло в голову, это добавить иконке удаления карточки data-remove-icon аттрибут и в слушалке проверять на наличие этого свойства в event.target.dataset. Думаю, что это не самый верный способ.

Воссоздал похожее безобразие тут.

Заранее спасибо.
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
Athanor
@Athanor
Лайк + Решение: не жмись, нажми
Родителя не получается найти, т.к элемент удаляется раньше, чем происходит обработка клика, чтоб исправить это на ум приходит множество костылей, но я бы предложил не писать велосипедов, а использовать проверенные готовые решения типа https://github.com/Pomax/react-onclickoutside

Ваш код с использованием библиотеки:
https://codesandbox.io/embed/suspicious-grass-6h3m...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы