// Code 4-2-7 import { useState } from 'react'; // Todo 항목 id의 최대값(등록할 때마다 증가) let maxId = 0; export default function StateTodo() { // 입력값(title), 할 일 목록(todo)을 State로 관리 const [title, setTitle] = useState(''); const [todo, setTodo] = useState([]); // 텍스트 상자에 입력한 내용을 State에 반영 const handleChangeTitle = e => { setTitle(e.target.value); }; const handleClick = () => { // 새 할 일 추가하기 setTodo([ ...todo, { id: ++maxId, // id 값 title, // Todo 본체 created: new Date(), // 생성 날짜 및 시각 isDone: false // 실행 완료? } ]); }; return (

{/* 할 일을 목록으로 정리하기 */}
); } // Code 4-2-9 // import { useState } from 'react'; // import './StateTodo.css'; // let maxId = 0; // export default function StateTodo() { // // 입력값(title), 할 일 목록(todo)을 State로 관리 // const [title, setTitle] = useState(''); // const [todo, setTodo] = useState([]); // // 텍스트 상자에 입력한 내용을 State에 반영 // const handleChangeTitle = e => { // setTitle(e.target.value); // }; // const handleClick = () => { // // 새 할 일 추가하기 // setTodo([ // ...todo, // { // id: ++maxId, // id 값 // title, // Todo 본체 // created: new Date(), // 생성 날짜 및 시각 // isDone: false // 실행 완료? // } // ]); // }; // // [완료] 버튼으로 Todo 항목을 완료 상태로 변경 // const handleDone = e => { // // todo 배열을 스캔하여 id 값이 같은 것을 검색한다. // setTodo(todo.map(item => { // if (item.id === Number(e.target.dataset.id)) { // return { // ...item, // isDone: true // }; // } else { // return item; // } // })); // }; // return ( //
// // // {/* 할 일을 목록으로 정리하기 */} // //
// ); // } // Code 4-2-11 // import { useState } from 'react'; // import './StateTodo.css'; // let maxId = 0; // export default function StateTodo() { // // 입력값(title), 할 일 목록(todo)을 State로 관리 // const [title, setTitle] = useState(''); // const [todo, setTodo] = useState([]); // // 텍스트 상자에 입력한 내용을 State에 반영 // const handleChangeTitle = e => { // setTitle(e.target.value); // }; // const handleClick = () => { // // 새 할 일 추가하기 // setTodo([ // ...todo, // { // id: ++maxId, // id 값 // title, // Todo 본체 // created: new Date(), // 생성 날짜 및 시각 // isDone: false // 실행 완료? // } // ]); // }; // // [완료] 버튼으로 Todo 항목을 완료 상태로 변경 // const handleDone = e => { // // todo 배열을 스캔하여 id 값이 같은 것을 검색한다. // setTodo(todo.map(item => { // if (item.id === Number(e.target.dataset.id)) { // return { // ...item, // isDone: true // }; // } else { // return item; // } // })); // }; // // [삭제] 버튼으로 해당 Todo 항목을 삭제한다. // const handleRemove = e => { // setTodo(todo.filter(item => // item.id !== Number(e.target.dataset.id) // )); // }; // return ( //
// // //
// {/* 할 일을 목록으로 정리하기 */} // //
// ); // } // Code 4-2-12 // import { useState } from 'react'; // import './StateTodo.css'; // let maxId = 0; // export default function StateTodo() { // // 다음 정렬 방향 (내림차순인 경우 true) // const [desc, setDesc] = useState(true); // // 입력값(title), 할 일 목록(todo)을 State로 관리 // const [title, setTitle] = useState(''); // const [todo, setTodo] = useState([]); // // 텍스트 상자에 입력한 내용을 State에 반영 // const handleChangeTitle = e => { // setTitle(e.target.value); // }; // const handleClick = () => { // // 새 할 일 추가하기 // setTodo([ // ...todo, // { // id: ++maxId, // id 값 // title, // Todo 본체 // created: new Date(), // 생성 날짜 및 시각 // isDone: false // 실행 완료? // } // ]); // }; // // [완료] 버튼으로 Todo 항목을 완료 상태로 변경 // const handleDone = e => { // // todo 배열을 스캔하여 id 값이 같은 것을 검색한다. // setTodo(todo.map(item => { // if (item.id === Number(e.target.dataset.id)) { // return { // ...item, // isDone: true // }; // } else { // return item; // } // })); // }; // // [삭제] 버튼으로 해당 Todo 항목을 삭제한다. // const handleRemove = e => { // setTodo(todo.filter(item => // item.id !== Number(e.target.dataset.id) // )); // }; // const handleSort = e => { // // 기존 Todo 목록을 복제하여 정렬하기 // const sorted = [...todo]; // sorted.sort((m, n) => { // // desc 값에 따라 오름차순/내림차순 결정 // if (desc) { // return n.created.getTime() - m.created.getTime(); // } else { // return m.created.getTime() - n.created.getTime(); // } // }); // // desc 값 반전 // setDesc(d => !d); // // 정렬된 목록 재설정 // setTodo(sorted); // }; // return ( //
// // // {/* desc 값에 따라 캡션 변경 */} // //
// {/* 할 일을 목록으로 정리하기 */} // //
// ); // }