React/Lecture

[Kossie Coder] 영화 삭제하기 - 현재 시간 id로 저장

Lami 2022. 1. 14. 01:38
// 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 */