1. Form 컴포넌트화 (MovieForm.js)
import React, {useState} from "react";
// addMovie 함수를 파라미터로 받음.
const MovieForm = ({addMovie}) => {
const [movieTitle, setMovieTitle] = useState('');
const [movieYear, setMovieYear] = useState('');
// form reset function
const resetForm = () => {
setMovieTitle('');
setMovieYear('');
};
const onSubmit = (event) => {
event.preventDefault();
// 파라미터로 받은 addMovie 함수를 통해 부모의 movies state에 데이터를 추가할 수 있다.
addMovie({
title: movieTitle,
year: movieYear
});
resetForm();
};
return (
<form onSubmit={onSubmit}>
<input
type="text
value={movieTitle}
placeholder="영화제목"
onChange={e => setMovieTitle(e.target.value)}
/><br/>
<input
type="text
value={movieYear}
placeholder="개봉년도"
onChange={e => setMovieYear(e.target.value)}
/><br/>
<button type="submit">영화추가</button>
</form>
);
}
export default MovieForm;
2. 부모 컴포넌트 (App.js)
...
import MovieForm from "./components/MovieForm";
...
const addMovie = (movie) => {
setMovies([
...movies,
movie // 자식 컴포넌트로부터 받은 movie 객체를 현재 movies state에 저장
]);
};
return (
<div className="App">
<MovieForm addMovie={addMovie}/>
{renderMovies}
</div>
);
...
강의 링크
'[ Web ] > React.js' 카테고리의 다른 글
[React.js] Kossie Coder - 16강. 영화 폼 validation (0) | 2021.12.29 |
---|---|
[React.js] Kossie Coder - 15강. 영화 삭제하기 (0) | 2021.12.29 |
[React.js] Kossie Coder - 13강. 영화 리스트 추가 폼 만들기 2 (0) | 2021.12.28 |
[React.js] Kossie Coder - 12강. 영화 리스트 추가 폼 만들기 1 (0) | 2021.12.28 |
[React.js] Kossie Coder - 11강. 컴포넌트와 props 데이터 보내기 복습 (0) | 2021.12.28 |