[javascript] Next.js에서의 폼 유효성 검사 처리 방법은 어떤 것이 있나요?
Next.js에서 폼의 유효성을 검사하는 방법은 여러 가지가 있습니다. 여기에서는 두 가지 방법을 소개하겠습니다.
- 클라이언트 측 유효성 검사:
이 방법은 Next.js에서 제공하는 자체 유효성 검사 기능을 사용하는 방법입니다.
- 폼 구성 요소에 ‘required’와 같은 HTML5 유효성 검사 속성을 추가합니다.
- 폼 submit 이벤트를 처리하기 전에 클라이언트 측에서 폼의 유효성을 검사하는 JavaScript 코드를 작성합니다.
- 예를 들어, handleSubmit 함수 내에서 폼 유효성 검사를 수행하는 코드를 작성할 수 있습니다.
import { useState } from 'react';
export default function MyForm() {
const [inputValue, setInputValue] = useState('');
const handleSubmit = (event) => {
event.preventDefault();
// 폼 유효성 검사 로직
if (inputValue.trim() === '') {
alert('입력값이 비어 있습니다.');
return;
}
// 폼을 서버로 제출하는 로직
// ...
};
return (
<form onSubmit={handleSubmit}>
<input
type="text"
value={inputValue}
onChange={(event) => setInputValue(event.target.value)}
/>
<button type="submit">전송</button>
</form>
);
}
- 서버 측 유효성 검사:
이 방법은 서버 측에서 전체 폼 유효성 검사를 수행하는 방법입니다.
- Next.js API 라우트를 사용하여 서버 측의 유효성 검사 로직을 구현합니다.
- 폼 제출 시 API 라우트로 데이터를 전송하고, 서버에서 유효성을 검사하고 처리합니다.
- 만약 유효성 검사에 실패하면 에러 메시지를 반환하고, 성공하면 다음 단계로 이동합니다.
// pages/api/submit-form.js
export default function handleFormSubmit(req, res) {
const { inputValue } = req.body;
// 폼 유효성 검사 로직
if (inputValue.trim() === '') {
res.status(400).json({ error: '입력값이 비어 있습니다.' });
return;
}
// 폼을 처리하는 로직
// ...
}
// MyForm 컴포넌트에서 API 라우트로 폼 데이터를 전송하는 부분
// ...
const handleSubmit = async (event) => {
event.preventDefault();
try {
const response = await fetch('/api/submit-form', {
method: 'POST',
body: JSON.stringify({ inputValue }),
headers: { 'Content-Type': 'application/json' },
});
if (!response.ok) {
const errorData = await response.json();
throw new Error(errorData.error);
}
// 성공적으로 처리된 경우 다음 단계로 이동
} catch (error) {
alert(error.message);
}
};
// ...
위의 방법 중에서 선택하여 폼 유효성 검사를 처리할 수 있습니다. 필요에 따라 클라이언트 측, 서버 측 또는 양측 모두를 사용할 수도 있습니다. 이러한 방법을 활용하여 안전하고 유효한 데이터를 수집하고 처리할 수 있습니다.
참고 문서:
- Next.js Forms: https://nextjs.org/docs/forms
- HTML5 form validation: https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation