--- title: React SDK --- # React SDK CaptchaLa CAPTCHA를 위한 공식 React 컴포넌트 + Hook입니다. npm에 [`@captcha-la/react`](https://www.npmjs.com/package/@captcha-la/react)로 배포되어 있습니다. ## 라이브 데모 ::: tip 📦 [demo-v1.captcha.la/react](https://demo-v1.captcha.la/react/) — 4 가지 product 모드를 모두 포함한 실행 가능한 데모입니다. 소스: [Captcha-La/react-example](https://github.com/Captcha-La/react-example). ::: ## 설치 ```bash npm install @captcha-la/react # 또는 yarn add @captcha-la/react # 또는 pnpm add @captcha-la/react ``` Peer dependencies: `react@^17 || ^18 || ^19`, `react-dom@^17 || ^18 || ^19`. ## 빠른 시작 ### 컴포넌트 ```tsx import { Captchala } from '@captcha-la/react' function App() { return ( console.log('pass_token:', result.token)} onError={(err) => console.error(err)} /> ) } ``` ### Hook ```tsx import { useCaptchala } from '@captcha-la/react' function LoginForm() { const { ready, verify } = useCaptchala({ appKey: 'your-app-key', product: 'bind', action: 'login', }) async function handleSubmit(e) { e.preventDefault() const result = await verify() // result.token → 폼과 함께 전송하십시오 } return (
) } ``` ## Props | Prop | Type | Default | 설명 | |------|------|---------|-------------| | `appKey` | `string` | *필수* | CaptchaLa 애플리케이션 키 | | `serverToken` | `string` | - | 서버에서 발급한 일회용 챌린지 토큰입니다. 앱이 `server_token_required=true` 인 경우 필수입니다. | | `product` | `'popup' \| 'float' \| 'embed' \| 'bind'` | `'popup'` | 표시 모드 | | `action` | `string` | `'default'` | 액션 식별자 | | `lang` | `string` | `'zh-CN'` | 언어 코드 | | `onSuccess` | `(result) => void` | - | 성공 콜백 | | `onError` | `(error) => void` | - | 오류 콜백 | | `onClose` | `() => void` | - | 닫힘 콜백 | | `onReady` | `() => void` | - | 준비 완료 콜백 | | `className` | `string` | - | 컨테이너 클래스 이름 | | `style` | `CSSProperties` | - | 컨테이너 인라인 스타일 | ## 메서드 (`ref` 경유) ```tsx import { useRef } from 'react' import { Captchala, type CaptchalaRef } from '@captcha-la/react' function App() { const ref = useRef(null) return ( <> ) } ``` | Method | 설명 | |--------|-------------| | `verify()` | 검증을 트리거합니다 | | `reset()` | CAPTCHA 상태를 재설정합니다 | | `destroy()` | 인스턴스를 파괴합니다 | | `bindTo(selector)` | 엘리먼트에 바인딩합니다 (`bind` 모드용) | | `setLang(lang)` | 언어를 즉시 변경합니다 | ## 프로덕션: `serverToken` 모드 ```tsx import { useState, useEffect } from 'react' import { Captchala } from '@captcha-la/react' function LoginPage() { const [token, setToken] = useState() useEffect(() => { fetch('/api/captcha-token') // 자체 백엔드 .then((r) => r.json()) .then((d) => setToken(d.server_token)) }, []) if (!token) return
Loading…
return ( console.log('pass_token:', r.token)} /> ) } ``` 백엔드 계약 전체는 [API 레퍼런스](/ko/api-reference)를 참조하십시오. ## 링크 - [npm](https://www.npmjs.com/package/@captcha-la/react) · [GitHub](https://github.com/Captcha-La/react) · [예제](https://github.com/Captcha-La/react-example) - [Web SDK 개요](/ko/web-sdk) · [API 레퍼런스](/ko/api-reference)