Loading
미리보기는 샘플 데이터로 동작합니다. 네트워크도 채널도 필요 없습니다.
tsx
import { useYuvaSubscribe } from "@/hooks/use-yuva-subscribe"
export function Lists() {
const { lists, states, setSubscribed } = useYuvaSubscribe({
server={process.env.NEXT_PUBLIC_YUVA_SERVER}
channel={process.env.NEXT_PUBLIC_YUVA_CHANNEL},
})
return (
<ul>
{lists.map((list) => (
<li key={list.id}>
{list.name}
<button onClick={() => void setSubscribed(list.id, states[list.id] !== "subscribed", "I agree")}>
{states[list.id] === "subscribed" ? "Unsubscribe" : "Subscribe"}
</button>
</li>
))}
</ul>
)
}설치
shadcn 프로젝트에서 실행하세요. 파일이 여러분의 코드로 복사됩니다.
Shell
npx shadcn@latest add https://useyuva.com/r/use-yuva-subscribe.jsonShell
pnpm dlx shadcn@latest add https://useyuva.com/r/use-yuva-subscribe.jsonShell
yarn dlx shadcn@latest add https://useyuva.com/r/use-yuva-subscribe.jsonShell
bunx --bun shadcn@latest add https://useyuva.com/r/use-yuva-subscribe.json사용법
tsx
import { useYuvaSubscribe } from "@/hooks/use-yuva-subscribe"
const { lists, states, subscribe, setSubscribed } = useYuvaSubscribe({ server, channel })Props
UseYuvaSubscribeOptions
| Prop | 유형 |
|---|---|
server? | string |
channel? | string |
client? | YuvaClient |
identityToken? | IdentityTokenSource | null |
lists? | string[] |
YuvaSubscribeState
| Prop | 유형 |
|---|---|
inboxName | string |
lists | ClientMailingList[] |
states | Record<string, SubscriptionState | undefined> |
identified | boolean |
loading | boolean |
error | unknown |
subscribe | (input: YuvaSubscribeInput) => Promise<{ confirmation: boolean }> |
setSubscribed | (listId: string, on: boolean, consentText: string) => Promise<SubscriptionState> |
의존성
이 항목을 설치하면 다음도 함께 추가됩니다.