노마드코더 ReactJS로 영화 웹 서비스 만들기 #7 To Do List
import { useState, useEffect } from "react";
function App() {
  const [toDo, setToDo] = useState("");
  const [toDos, setToDos] = useState([]);
  const onChange = (event) => setToDo(event.target.value);
  const onSubmit = (event) => {
    event.preventDefault();
    if (toDo === "") {
      return;
    }
    setToDos((currentArray) => [toDo, ...currentArray]);
    setToDo("");
  };
  console.log(toDos);
  return (
    <div>
      <h1>My To Dos ({toDos.length})</h1>
      <form onSubmit={onSubmit}>
        <input
          onChange={onChange}
          value={toDo}
          type="text"
          placeholder="Write your to do ..."
        />
        <button>Add To Do</button>
      </form>
      <hr />
      <ul>
        {toDos.map((item, index) => (
          <li key={index}>{item}</li>
        ))}
      </ul>
    </div>
  );
}
export default App;
toDo를 input으로 받고, 여러개의 toDo를 받을 수 있는 toDos 배열을 빈 배열로 만든다.
이 때 state는 toDo = "" 이런식으로 직접적으로 수정을 하는 것이 불가능하다.
setToDo("") 로 함수를 수정하게 해야 한다.
첫번째 toDo를 입력할 때 비어있는 currentArray를 받아오고, 작성한 input값인 toDo를 더해 배열에 값을 더해준다.
자바스크립트 코드를 사용해 toDos 배열의 모든 원소들에 각각 고유한 key 값을 달고, li 태그로 감싸준다.

반응형
    
    
    
  'FRONT > REACT' 카테고리의 다른 글
| [React] async / await (0) | 2022.01.14 | 
|---|---|
| [React] 노마드코더 영화 웹서비스 - Coin Tracker (0) | 2022.01.07 | 
| [React] Effect Hook- Clean up 함수 (0) | 2022.01.07 | 
| [React] UseEffect 사용하기(노마드코더 영화 웹서비스 만들기) (0) | 2022.01.06 | 
| [react] Converter 만들기 (state 사용) (0) | 2021.12.30 |