오류 현상
- 실제로 값이 2개가 추가되는 것이 아닌, Sortable JS 의 DOM 업데이트와 Svelte의 반응성이 더해져 2개의 데이터가 추가되는 것 처럼 보이는 현상.
[ 해결 코드 ]
onAdd(event) {
this.el.removeChild(event.item)
},
[ Sortable 전체 코드 ]
<script>
...
let cardsEl
let sortableCards
onMount(() => {
sortableCards = new Sortable(cardsEl, {
group: "cards",
handle: ".card",
delay: 150,
animation: 0,
forceFallback: true,
onAdd(event) {
this.el.removeChild(event.item)
},
onEnd(event) {
console.log(event)
console.log(event.clone)
cards.reorder({
fromListId: event.from.dataset.listId,
toListId: event.to.dataset.listId,
oldIndex: event.oldIndex,
newIndex: event.newIndex
})
}
})
})
...
</script>
- Sortable 객체 내부의 onAdd(event) {} 로직을 통해서 add 이벤트로 인해 요소가 추가되는 toList에 생성될 요소를 제거하는 로직을 추가해서 해결되었다.
DOM 업데이트와 관련된 버그들 디버깅이 상당히 어려운 느낌이다. 강의 버전인 Svelte 3,4 버전과 현재 사용중인 Svelte 5 와 버전 차이로 인한 문제들은 많았는데, 자주 사용할 것 같은 라이브러리 관련 오류라 임시로 글 작성해두었다.
슬슬 Svlete 관련 내용들도 정리해서 올려보도록 해야겠다.🔥
'웹개발 - Front 관련' 카테고리의 다른 글
[ Svelte 5 ] - 2. 상태 관리 Rune 정리 & Rune store subscribe 흉내 내보기 (1) | 2024.11.28 |
---|---|
[ Svelte5 ] - 1. 기본 Svelte 컴포넌트 구성 요소, HTML 템플릿 문법 (0) | 2024.11.26 |
[TIL] CSS / word-break [ 문자열 단어기준 / 글자기준 줄바꿈 속성 ] (2) | 2024.03.31 |
[TIL] JavaScript - InterSectionObserver - 속성 및 기본 사용 편 (0) | 2024.03.30 |
JS Library - Swiper.js (1) 개념, 사용방법, 속성들 (0) | 2024.03.01 |