Skip to content

Commit

Permalink
[#39] Feat: PullToRefresh hook 구현 및 font 깨짐 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
DHyeon98 committed Jun 20, 2024
1 parent 196ceec commit b5dc613
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
1 change: 1 addition & 0 deletions components/common/nav/nav-list/nav-list-item.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
}
span {
font-weight: 500;
word-break: keep-all;
}
}
&:hover {
Expand Down
47 changes: 47 additions & 0 deletions hooks/usePullReload.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { useEffect, useState } from 'react';

export default function usePullReload() {
const [pullDownDistance, setPullDownDistance] = useState(0);
const [isDragging, setIsDragging] = useState(false);
const [startY, setStartY] = useState(0);

useEffect(() => {
let distance = 0;
const handleMouseDown = (e: MouseEvent) => {
setIsDragging(true);
setStartY(e.clientY);
};

const handleMouseMove = (e: MouseEvent) => {
if (isDragging) {
const currentY = e.clientY;
distance = currentY - startY;
if (distance < 0) distance = 0;
if (distance > 200) distance = 200; // 최대 높이를 200px로 제한
setPullDownDistance(distance);
}
};

const handleMouseUp = () => {
if (distance > 50) {
window.location.reload();
}
setIsDragging(false);
setPullDownDistance(0); // 마우스를 놓으면 여백을 초기화
};

// 이벤트 리스너 등록
document.addEventListener('mousedown', handleMouseDown);
document.addEventListener('mousemove', handleMouseMove);
document.addEventListener('mouseup', handleMouseUp);

return () => {
// 컴포넌트가 언마운트될 때 이벤트 리스너 제거
document.removeEventListener('mousedown', handleMouseDown);
document.removeEventListener('mousemove', handleMouseMove);
document.removeEventListener('mouseup', handleMouseUp);
};
}, [isDragging, startY]);

return pullDownDistance;
}

0 comments on commit b5dc613

Please sign in to comment.