[ Web ]/React.js

[React.js] Kossie Coder - 16강. 영화 폼 validation

HoYoung Kim 2021. 12. 29. 15:11

1. MovieForm.js : form 입력 값에 대한 validation

...
	// 에러 메세지를 담을 state 변수
	const [titleError, setTitleError] = useState('');
	const [yearError, setYearError] = useState('');

	const validateForm = () => {
		// validate 전, 에러 메세지 리셋
		resetErrors();
		let validated = true;

		if (!movieTitle) {
			setTitleError('영화제목을 넣어주세요.');
			validated = false;
		}
		if (!movieYear) {
			setYearError('개봉년도를 넣어주세요.');
			validated = false;
		}
		return validated;
	};

	// 에러 메세지 리셋 함수
	const resetErrors = () => {
		setTitleError('');
		setYearError('');
	};

	const onSubmit = (event) => {
		event.preventDefault();

		if (validateForm()) {
			addMovie({
				id: Date.now(),
				title: movieTitle,
				year: movieYear
			});
			// 데이터 추가에 성공하면 에러 메세지 및 form 리셋
			resetErrors();
			resetForm();
		}
	};

	return (
		<form onSubmit={onSubmit}>
			<input
				type="text"
				value={movieTitle}
				placeholder="영화제목"
				onChange={e => setMovieTitle(e.target.value)}
			/><br/>
			{/* 에러 메세지를 출력할 div 태그 */}
			<div style={{color: 'red'}}>{titleError}</div>
			<input
				type="number"
				value={movieYear}
				placeholder="개봉년도"
				onChange={e => setMovieYear(e.target.value)}
			/><br/>
			<div style={{color: 'red'}}>{yearError}</div>
			<button type="submit">영화추가</button>
		</form>
	);
...