Todo List 만들기 - 2

박재민·2024년 1월 23일
0

TIL

목록 보기
22/49

- React Todo List 만들기


  const clickDeleteBtnHandler = (id) => {
    const updatedTodos = todos.filter((todo) => todo.id !== id);
    setTodos(updatedTodos);
  };

  const clickCompleteBtnHandler = (id) => {
    const updatedTodos = todos.map((todo) =>
      todo.id === id ? { ...todo, isDone: true } : todo,
    );
    setTodos(updatedTodos);
  };

  const clickCancelBtnHandler = (id) => {
    const updatedTodos = todos.map((todo) =>
      todo.id === id ? { ...todo, isDone: false } : todo,
    );
    setTodos(updatedTodos);
  };
클릭 했을 때 발생하는 이벤트 핸들러를 만들어준다. filter 를 사용해서 해당 id 와 일치하지 않는 todo를 새로운 배열로 만들어 업데이트된 todo로 설정하고, map 을 사용해서 해당 ID와 일치하는 todo는 복제하고 isDone 속성만 변경한 후, 나머지는 그대로 유지한 새로운 배열을 만들어 업데이트된 할 일 목록으로 설정한다. 일치하지 않는 목록은 그대로 유지한다.
import Button from "react-bootstrap/Button";

const AddButton = ({ clickAddBtnHandler }) => {
  return (
    <div className="todo-add-button">
      <Button variant="success" onClick={clickAddBtnHandler}
      className="add-button">
        추가하기
      </Button>
    </div>
  );
  
};

export default AddButton;
import Button from "react-bootstrap/Button";

const AddTodoList = ({ item, deleteFunc, completeFunc, cancelFunc }) => {
  return (
    <div key={item.id} className="todo-card">
      <div className="text-box">
        <h3>{item.title}</h3>
        <br />
        <h6>{item.content}</h6>
      </div>
      <div className="todo-btn-list">
        <Button variant="danger" onClick={() => deleteFunc(item.id)}
        className="todo-button">
          삭제하기
        </Button>
        {item.isDone ? (
        <Button variant="warning" onClick={() => cancelFunc(item.id)}
        className="todo-button">
          취소하기
        </Button>
      ) : (
        <Button variant="primary" onClick={() => completeFunc(item.id)}
        className="todo-button">
          완료하기
        </Button>
      )}
      </div>
    </div>
  );
};

export default AddTodoList;
버튼을 눌렀을 때 리턴되는 내용을 컴포넌트로 따로 분류했다.

0개의 댓글