오늘은 하루종일 드래그 앤 드랍이랑 싸웠습니다. 드래그는 어찌 어찌 구현하였지만 드래그를 하면서 내가 넣고 싶은 곳에 공간을 비우는 것이나 드랍했을때 그 드랍할 위치에 어떤 아이템이 있었는지에 대해 감지하는 것에서 막혔다.
설계 중에 중간 중간 어려운 부분이 있어서 제대로 완성이 되지 않고 있습니다.
인피니티 스크롤을 구현할 때 scrollevent를 통해 구현을 하게 되면 꽤 많은 부분을 신경써야 합니다. Intersection Observer를 이용하면 좀 더 쉽게 구현 할 수 있습니다.
intersection observer는 특정 엘리먼트가 내가 보는 화면에 보였이지 않았을때는 false 보였을때는 true를 리턴합니다.
그래서 검색결과를 li로 나열하고 또 검색할 수 있을때 (검색어의 최대 결과보다 현 검색 결과가 적을때) li태그를 감싸고 있는 ul 태그 아래에 loading 컴포넌트를 위치하게 합니다. 그리고 loading 컴포넌트를 observe하면서 로딩 컴포넌트가 보일때 비동기 호출을 하게 하였습니다. 그리고 모든 검색 결과가 불러와지면 loading 컴포넌트를 숨겨서 비동기 호출을 막게끔 하였습니다.
내일은 드래그 엔 드랍을 꼭 해내고 말 것입니다.