Get widget token

You can get the widget token by three ways:

onSuccess callback

import { Turnstile } from "@marsidev/react-turnstile";

export default function Widget() {
  const [token, setToken] = React.useState<string | null>(null);

  return (
    <Turnstile siteKey="1x00000000000000000000AA" onSuccess={setToken} />
  );
}

ref.current.getResponse() method

import { Turnstile } from "@marsidev/react-turnstile";
import type { TurnstileInstance } from "@marsidev/react-turnstile";

export default function Widget() {
  const ref = React.useRef<TurnstileInstance | null>(null);

  return (
    <>
      <Turnstile ref={ref} siteKey="1x00000000000000000000AA" />

      <button onClick={() => alert(ref.current?.getResponse())}>
        Get response
      </button>
    </>
  );
}

cf-turnstile-response HTML input

import { Turnstile } from "@marsidev/react-turnstile";

export default function Widget() {
  const formRef = React.useRef<HTMLFormElement>(null);

  async function handleSubmit(event: React.FormEvent<HTMLFormElement>) {
    event.preventDefault();
    const formData = new FormData(formRef.current!);
    const token = formData.get("cf-turnstile-response");
    // ...
  }

  return (
    <form ref={formRef} onSubmit={handleSubmit}>
      <input type="text" placeholder="username" />
      <input type="password" placeholder="password" />
      <Turnstile siteKey="1x00000000000000000000AA" />
      <button type="submit">Login</button>
    </form>
  );
}