라이브러리는 실행 취소가 얼마나 오래 유지될지 결코 정하지 않습니다. 노드를 남겨 달라고 요청하는 것도, 언제 놓아줄지 정하는 것도 여러분입니다.
삭제된 노드 보관
const operation = effects.remove(element, {
retain: true,
});
await operation.finished;
const id = operation.removalId;
retain: true이면 분리된 원본을 불투명한 RemovalId 아래 내부 Map에 저장합니다. 숨겨진 컨테이너나 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도 항목 수 제한도 없습니다. 라이브러리는 뒤에서 콘텐츠를 삭제하지 않지만 자동으로 정리해 주지도 않습니다. 사용하지 않는 모든 RemovalId는 반드시 take()로 소비하거나 discard() 또는 discardAll()로 해제해야 합니다.
실행 취소가 만료되는 시점은 애플리케이션이 정합니다. 알림이 닫힐 때, 경로가 바뀔 때, 기록 항목이 확정될 때 등을 사용할 수 있습니다.
영구 삭제
retain을 지정하지 않으면 라이브러리 관점에서는 이미 영구 삭제입니다.
effects.remove(element); // retain: false
완료 후 작업 객체와 라이브러리 저장소 모두 요소를 붙잡지 않습니다.