# Reaction Button
URL: /lynx/components/reaction-button
Source: https://github.com/daangn/seed-design/blob/dev/docs/content/lynx/components/reaction-button.mdx
사용자가 콘텐츠에 대한 반응을 표현할 수 있게 해주는 컴포넌트입니다. 좋아요, 관심있어요 등의 감정적 피드백을 간편하게 제공할 때 사용됩니다.
Lynx Engine 최소 버전: 3.6
사용 가능 버전: @seed-design/lynx-react@0.6.0, @seed-design/lynx-css@0.10.0
## Installation
- npm: npm install @seed-design/lynx-react @seed-design/lynx-css
- pnpm: pnpm add @seed-design/lynx-react @seed-design/lynx-css
- yarn: yarn add @seed-design/lynx-react @seed-design/lynx-css
- bun: bun add @seed-design/lynx-react @seed-design/lynx-css
Lynx `ReactionButton`은 별도 `ui:reaction-button` snippet 없이 `@seed-design/lynx-react` 패키지에서 직접 제공합니다.
## Usage
## Preview
```tsx
import "./styles";
import IconBellFill from "@karrotmarket/lynx-monochrome-icon/IconBellFill";
import { Count, PrefixIcon, ReactionButton, useSeedClassName } from "@seed-design/lynx-react";
export default function Example() {
const seedClassName = useSeedClassName({ colorMode: "system" });
return (
} />
도움돼요
1
);
}
```
## Props
## Examples
### Small
```tsx
import "./styles";
import IconBellFill from "@karrotmarket/lynx-monochrome-icon/IconBellFill";
import { Count, PrefixIcon, ReactionButton, useSeedClassName } from "@seed-design/lynx-react";
export default function Example() {
const seedClassName = useSeedClassName({ colorMode: "system" });
return (
} />
도움돼요
1
);
}
```
### Xsmall
```tsx
import "./styles";
import IconBellFill from "@karrotmarket/lynx-monochrome-icon/IconBellFill";
import { Count, PrefixIcon, ReactionButton, useSeedClassName } from "@seed-design/lynx-react";
export default function Example() {
const seedClassName = useSeedClassName({ colorMode: "system" });
return (
} />
도움돼요
1
);
}
```
### Disabled
```tsx
import "./styles";
import IconBellFill from "@karrotmarket/lynx-monochrome-icon/IconBellFill";
import { PrefixIcon, ReactionButton, useSeedClassName } from "@seed-design/lynx-react";
export default function Example() {
const seedClassName = useSeedClassName({ colorMode: "system" });
return (
} />
비활성
);
}
```
### Loading
```tsx
import "./styles";
import IconBellFill from "@karrotmarket/lynx-monochrome-icon/IconBellFill";
import { useState } from "@lynx-js/react";
import { PrefixIcon, ReactionButton, useSeedClassName } from "@seed-design/lynx-react";
export default function Example() {
const seedClassName = useSeedClassName({ colorMode: "system" });
const [{ pressed, loading }, setState] = useState({
pressed: false,
loading: false,
});
function handleToggle() {
"background only";
setState((previous) => ({ pressed: previous.pressed, loading: true }));
setTimeout(() => {
setState((previous) => ({ pressed: !previous.pressed, loading: false }));
}, 2000);
}
return (
} />
시간이 걸리는 토글
);
}
```
Loading 중에도 `bindtap`과 `onPressedChange`가 동작합니다. 이벤트를 막아야 한다면 `disabled`를 함께 사용하세요.
## 웹 버전과의 차이
Lynx `ReactionButton`은 React `ReactionButton`과 다음과 같은 차이가 있습니다.
- **이벤트 핸들링**: `onClick` 대신 `bindtap`을 사용합니다.
- **렌더링 요소**: HTML `