발사 트리거
사용
import { ConfettiProvider, useConfetti } from '@baneung-pack/effect';
// 1. 앱 루트에 Provider
<ConfettiProvider>{children}</ConfettiProvider>
// 2. 컴포넌트에서 호출
function CheckoutButton() {
const confetti = useConfetti();
return (
<button onClick={async () => {
await checkout();
confetti.fire({ particleCount: 200 });
}}>결제</button>
);
}
// 버튼에서 발사
const ref = useRef<HTMLButtonElement>(null);
confetti.fire({ origin: ref.current });
// 양쪽에서
confetti.fire({ origin: { ratioX: 0.1, ratioY: 0.5 }, angle: 60 });
confetti.fire({ origin: { ratioX: 0.9, ratioY: 0.5 }, angle: 120 });
useConfetti() → ConfettiApi
| Property | Type | 기본값 | 설명 |
|---|
| fire(options?) | (opts?: ConfettiFireOptions) => void | — | 발사. 동시 호출 가능 (양쪽 등). |
ConfettiFireOptions (fire 호출 시)
| Property | Type | 기본값 | 설명 |
|---|
| origin | {x,y} | {ratioX,ratioY} | HTMLElement | 가운데 하단 | 발사 위치 — 픽셀/비율/요소 중심. |
| particleCount | number | 80 | 입자 개수. |
| colors | string[] | 7색 vivid | 입자가 무작위 선택. |
| shape | 'square' | 'circle' | 'ribbon' | 'square' | 입자 모양. |
| spread | number | 60 | 발사 spread 각도 (deg). |
| angle | number | 90 | 발사 각도 (90=위, 0=오른쪽). |
| velocity | number | 14 | 초기 속도 (px/frame). |
| gravity | number | 0.5 | 중력 가속도 (px/frame²). |
| ticks | number | 130 | 입자 수명 (frame). |
| size | number | 10 | 입자 크기 (px). |