Form Actions 예제

← Actions 예제로 돌아가기

🎯 핵심 포인트

👤 회원가입

📞 연락처 저장

💡 Form Actions 패턴

// 1. 액션 함수 정의 (prevState를 받음)
async function submitForm(prevState, formData) {
    // 유효성 검사
    const errors = validate(formData);
    if (errors) {
        return { success: false, errors };
    }
    
    // 서버 작업 수행
    await saveToDatabase(formData);
    return { success: true, message: '저장 완료!' };
}

// 2. useActionState로 상태 관리
const [state, formAction, pending] = useActionState(submitForm, {
    success: false,
    message: ''
});

// 3. 폼에서 사용
<form action={formAction}>
    <input name="email" />
    <button disabled={pending}>
        {pending ? '처리 중...' : '제출'}
    </button>
</form>

✨ 기존 방식과의 차이점

기존 방식 (useState + fetch)
  • • 수동 로딩 상태 관리
  • • 복잡한 에러 처리
  • • 폼 제출 이벤트 핸들링
  • • FormData 수동 생성
Form Actions (React 19)
  • • 자동 로딩 상태 (pending)
  • • 구조화된 에러 응답
  • • 선언적 폼 처리
  • • 자동 FormData 처리