// App.js
import React, { useState } from 'react';
import './index.css';
import Movie from './components/Movie';
import MovieForm from './components/MovieForm';
function App() {
const [movies, setMovies] = useState([]);
🌟const removeMovie = (id) => {
console.log(id); // 삭제 버튼 클릭 시 영화 추가할 때 id로 저장한 값 출력
};🌟
const renderMovies = movies.length
? movies.map((movie) => { 🌟// 현재 시간을 담은 id를 키값으로 설정🌟
return <Movie movie={movie} 🌟key={movie.id}🌟 🌟removeMovie={removeMovie}🌟 />;
}) 🌟// removeMovie 함수 props로 보내기🌟
: '추가된 영화가 없습니다.';
const addMovie = (movie) => {
setMovies([...movies, movie]);
};
return (
<div className="App">
<h1>Movie list</h1>
<MovieForm addMovie={addMovie} />
{renderMovies}
</div>
);
}
export default App;
// MovieForm.js
import React, { useState } from 'react';
const MovieForm = ({ addMovie }) => {
const [movieTitle, setMovieTitle] = useState('');
const [movieYear, setMovieYear] = useState('');
const resetForm = () => {
setMovieTitle('');
setMovieYear('');
};
const onSubmit = (event) => {
event.preventDefault();
addMovie({
🌟id: Date.now(), // 영화 추가 시 현재 시간 id로 저장🌟
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;
// Movie.js
import React from 'react';
const Movie = ({ movie, 🌟removeMovie🌟 }) => {
return (
<div className="movie">
<div className="movie-title">
{movie.title}
<span className="movie-year">({movie.year})</span>
</div>
<div>
🌟<button onClick={() => removeMovie(movie.id)}>삭제</button>🌟
</div> 🌟// 삭제 버튼 클릭 시 removeMovie 함수에 id 전달🌟
</div>
);
};
export default Movie;

/* 유튜브 코지코더 채널에서 리액트js (Reactjs) 기초 익히기 기본 강좌를 보며 기록한 글입니다.
https://youtube.com/playlist?list=PLB7CpjPWqHOuf62H44TMkMIsqfkIzcEcX */
'React > Lecture' 카테고리의 다른 글
[Kossie Coder] 폼 입력 안 했을 시 에러문구 표시 (0) | 2022.01.14 |
---|---|
[Kossie Coder] 영화 삭제하기 - filter를 이용해서 삭제한 id 가 아닌 영화들 return하기 (0) | 2022.01.14 |
[Kossie Coder] 자식 컴포넌트에서 부모 컴포넌트 스테이트 변경하기 (0) | 2022.01.13 |
[Kossie Coder] 자식 컴포넌트에 데이터 보내기2 - props (props 생략) (0) | 2022.01.13 |
[Kossie Coder] map을 이용한 리액트 반복문 (0) | 2022.01.13 |