Vanilla Disintegratev1.6.1
RU
На этой странице

Если удалённый элемент понадобится восстановить, сохраните его исходный DOM-узел с помощью retain: true. Когда узел больше не нужен, освободите его вручную.

Сохранить удалённый узел

const operation = effects.remove(element, {
  retain: true,
});

await operation.finished;
const id = operation.removalId;

При retain: true отсоединённый оригинал хранится во внутреннем Map под непрозрачным RemovalId. Библиотека не перемещает его в скрытый контейнер или DocumentFragment.

Забрать и восстановить

take(id) одновременно возвращает узел и удаляет сильную ссылку из хранилища.

if (id) {
  const retained = effects.take(id);

  if (retained) {
    destination.append(retained);
    effects.restore(retained);
  }
}

Приложение выбирает append, prepend, before или метод фреймворка. Библиотека работает уже с получившейся геометрией.

Освободить без восстановления

effects.discard(removalId); // boolean
effects.discardAll(); // количество освобождённых записей

destroy() также очищает всё хранилище.

Контроль памяти

TTL и лимита записей намеренно нет: библиотека не удаляет контент за пользователя. Поэтому каждый неиспользованный ID нужно забрать через take(), освободить через discard() либо очистить вместе с остальными через discardAll().

Когда освобождать сохранённый узел, решает приложение: например, после закрытия уведомления, смены маршрута или сохранения изменений в истории.

Удалить навсегда

Без retain удаление уже окончательно с точки зрения библиотеки:

effects.remove(element); // retain: false по умолчанию

После завершения ни объект операции, ни хранилище библиотеки не удерживают элемент.

Редактировать страницу на GitHub