archi_kud
@archi_kud
Frontend Developer

Почему элемент не пропадает?

Здравствуйте, есть список с элементами, в который с помощью appenChild был добавлен ещё один элемент. При изменении state, список перерисовывается, но элемент остаётся. Если элемент был добавлен с помощью js, то он все равно остаётся в dom?
  • Вопрос задан
  • 116 просмотров
Решения вопроса 2
Robur
@Robur
Знаю больше чем это необходимо
Реакт не в курсе что вы там еще в dom добавляете.
Можете дать всему списку ключ и менять этот ключ чтобы вся нода списка удалилась и создалась заново - тогда и левый элемент пропадает.
Но вообще лучше ничего в обход реакта не добавлять
Ответ написан
rockon404
@rockon404 Куратор тега React
Frontend Developer
Потому что React никак не взаимодействует с элементами, которые созданы не с помощью React. У элементов созданных React есть специальные свойства добавленные библиотекой(__reactEventHandlers$[hash], __reactInternalInstance$[hash]).
Есть три варианта удалить созданные вручную элементы:
1. Удалить их вручную, для этого достаточно добавить им общий селектор и уничтожать перед обновлением.
2. Заменить ключ компонента списка, как предлагает Robur. React полностью заменит ваш список удалив и создав новую DOM ноду.
3. Демонтировать список и смонтировать заново. Тут React демонтирует компонент, удалит родительскую ноду вместе с вашими элементами и смонтирует новый компонент и создаст новую ноду.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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