Lami
삶이 온통 사람의 길이니
Lami
전체 방문자
오늘
어제
  • 분류 전체보기 (165)
    • Elice (1)
      • 회고록 (1)
    • Git (0)
    • HTML ▪ CSS (4)
    • JavaScript (7)
      • BOJ (2)
      • Programmers (0)
      • Study Note (5)
    • TypeScript (0)
    • React (21)
      • Lecture (19)
      • Study Note (2)
    • Python (44)
      • CodeUp (38)
      • Programmers (0)
      • Study Note (6)
    • Modern Agile (80)
      • Tech Talk (7)
      • TIL (73)
    • 문제해결 (1)
    • 회고록 (5)
    • 도란도란 (2)

블로그 메뉴

  • Github

공지사항

  • 👋 안녕하세요!

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Lami

삶이 온통 사람의 길이니

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

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

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 */

'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
    'React/Lecture' 카테고리의 다른 글
    • [Kossie Coder] 폼 입력 안 했을 시 에러문구 표시
    • [Kossie Coder] 영화 삭제하기 - filter를 이용해서 삭제한 id 가 아닌 영화들 return하기
    • [Kossie Coder] 자식 컴포넌트에서 부모 컴포넌트 스테이트 변경하기
    • [Kossie Coder] 자식 컴포넌트에 데이터 보내기2 - props (props 생략)
    Lami
    Lami
    성장하는 즐거움을 알아가는 중입니다🌱

    티스토리툴바