0608

호두·2022년 6월 8일
0

공부

목록 보기
9/25

공부내용 한줄 요약
reacJS state로 투두리스트 만들기

state는 함수를 통해서만 수정할 수 있다. toDos.push 등 사용 X
form 안의 input value를 state값에 연결하고, form이 submit될 때마다 다른 state값(빈 배열)에 value를 추가한다. 사용자에게 배열을 보여준다.(react이므로 자동으로 re-rendering됨)

  • map(f): array에 대해 각각 function 실행하는 함수. 첫번째 인자는 진행순서에 맞는 요소, 두번째 인자는 index.
    ex) ['hi', 'hello'].map((todo) => todo.toUpperCase())

  • reactJS는 li를 렌더링 할 때 unique한 key값을 필요로 한다.
    toDos.map((item, index) => <li key={index}>{item}</li>)
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; //투두가 비어있다면 함수 작동 X
    }
    setToDos((currentArray) => [toDo, ...currentArray]); // currentArray의 모든 요소를 불러온다 - array 안에 array를 추가하는 대신
    setToDo("");
  };

return (
  <div>
    <h1>할 일({toDos.length})</h1>
    <form onSubmit={onSubmit}>
      <input
        onChange={onChange}
        value={toDo}
        type="text"
        placeholder='할 일을 입력하세요.'
      />
      <button>할 일 추가</button>
    </form>
    <hr />
    <ul>
      {toDos.map((item, index) => <li key={index}>{item}</li>)}
    </ul>
  </div>
  )
}

export default App;

Comment
바닐라js로 todo list를 만들었던 것처럼 local storage에 todolist를 저장하거나 db를 사용해보자.

profile
web developer

0개의 댓글