Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions src/hooks/useDoubleClick/ko/useDoubleClick.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# useDoubleClick

`useDoubleClick`는 단일 클릭과 더블 클릭 이벤트를 구분하는 리액트 훅이에요. 지정된 시간 동안 단일 클릭 콜백 실행을 지연시키고, 그 시간 안에 두 번째 클릭(즉, 더블 클릭)이 발생하면 이를 취소해요.

## 인터페이스

```ts
function useDoubleClick<E extends HTMLElement>(
params: Object
): (event: MouseEvent<E>) => void;
```

### 파라미터

<Interface
required
name="params"
type="Object"
description="클릭 처리를 위한 설정 옵션이에요."
:nested="[
{
name: 'params.delay',
type: 'number',
required: false,
defaultValue: '250',
description:
'단일 클릭 콜백을 실행하기 전에 기다릴 밀리초 수예요. 기본값은 250ms예요.',
},
{
name: 'params.click',
type: '(event: MouseEvent<E>) => void',
required: false,
description: '단일 클릭 시 실행될 콜백 함수예요.',
},
{
name: 'params.doubleClick',
type: '(event: MouseEvent<E>) => void',
required: true,
description:
'더블 클릭 시 실행될 콜백 함수예요. 필수예요.',
},
]"
/>

### 반환 값

<Interface
name=""
type="(event: MouseEvent<E>) => void"
description="요소의 <code>onClick</code> 이벤트에 첨부할 클릭 핸들러 함수예요."
/>

## 예시

```tsx
function GalleryCard() {
const [selected, setSelected] = useState(false);

const handleClick = () => setSelected(prev => !prev);
const handleDoubleClick = () => alert('확대해요!');

const handleEvent = useDoubleClick({
click: handleClick,
doubleClick: handleDoubleClick,
});

return (
<div onClick={handleEvent}>{selected ? '선택됨' : '선택되지 않음'}</div>
);
}
```
71 changes: 71 additions & 0 deletions src/hooks/useDoubleClick/useDoubleClick.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# useDoubleClick

`useDoubleClick` is a React hook that differentiates between single and double click events. It delays the single click callback execution for a specified time, and cancels it if a second click (i.e. a double click) occurs within that time.

## Interface

```ts
function useDoubleClick<E extends HTMLElement>(
params: Object
): (event: MouseEvent<E>) => void;
```

### Parameters

<Interface
required
name="params"
type="Object"
description="Configuration options for click handling."
:nested="[
{
name: 'params.delay',
type: 'number',
required: false,
defaultValue: '250',
description:
'The number of milliseconds to wait before triggering the single click callback. Defaults to 250ms.',
},
{
name: 'params.click',
type: '(event: MouseEvent<E>) => void',
required: false,
description: 'The callback function to be executed on a single click.',
},
{
name: 'params.doubleClick',
type: '(event: MouseEvent<E>) => void',
required: true,
description:
'The callback function to be executed on a double click. Required.',
},
]"
/>

### Return Value

<Interface
name=""
type="(event: MouseEvent<E>) => void"
description="click handler function to attach to an element's <code>onClick</code> event."
/>

## Example

```tsx
function GalleryCard() {
const [selected, setSelected] = useState(false);

const handleClick = () => setSelected(prev => !prev);
const handleDoubleClick = () => alert('Zoom in!');

const handleEvent = useDoubleClick({
click: handleClick,
doubleClick: handleDoubleClick,
});

return (
<div onClick={handleEvent}>{selected ? 'Selected' : 'Not selected'}</div>
);
}
```
Loading