diff --git a/src/TodoAccordion.jsx b/src/TodoAccordion.jsx index 6fb2812..2a18eb7 100644 --- a/src/TodoAccordion.jsx +++ b/src/TodoAccordion.jsx @@ -10,6 +10,7 @@ import {initialContent} from './NotProblem'; // 3. 상위 컴포넌트에서 정의한 이벤트 핸들러와 활성 여부를 TodoPanel 컴포넌트로 전달합니다. export default function TodoAccordion() { + const [openIndex, setOpenIndex] = useState(0); return (

이전 Todo List

@@ -18,6 +19,8 @@ export default function TodoAccordion() { setOpenIndex(index)} > {content.content} @@ -27,15 +30,15 @@ export default function TodoAccordion() { ) } -function TodoPanel({title, children}) { - const [isOpen, setIsOpen] = useState(false); +function TodoPanel({title, children, isOpen, onShow}) { + return (

{title}

{isOpen ? (

{children}

): ( - + )}
) diff --git a/src/TodoContent.jsx b/src/TodoContent.jsx index 51370fd..59abd26 100644 --- a/src/TodoContent.jsx +++ b/src/TodoContent.jsx @@ -8,11 +8,11 @@ import { initialTodos, AddTodo, TodoList } from './NotProblem'; // 힌트: 필요 없는 state는 제거하고, 필요한 값은 바로 사용하세요. export default function TodoContent() { const [todos, setTodos] = useState(initialTodos); - const [total, setTotal] = useState(initialTodos.length); - const [doneCount, setDoneCount] = useState(0); + // todos 배열 자체에서 항목 수 계산할 수 있음 + const total = todos.length; + const doneCount = todos.filter((todo)=>todo.isDone).length; function handleAddTodo(title) { - setTotal(total + 1); setTodos([ ...todos, { id: initialTodos.length++, title: title, isDone: false } @@ -20,18 +20,12 @@ export default function TodoContent() { } function handleChangeTodo(nextTodo) { - if (nextTodo.isDone) { - setDoneCount(doneCount + 1); - } else { - setDoneCount(doneCount - 1); - } setTodos(todos.map(prevTodo => ( prevTodo.id === nextTodo.id ? nextTodo : prevTodo ))); } function handleDeleteTodo(todoId) { - setTotal(total - 1); setTodos(todos.filter(prevTodo => prevTodo.id !== todoId)); } diff --git a/src/TodoHeader.jsx b/src/TodoHeader.jsx index fe1e63a..402ceeb 100644 --- a/src/TodoHeader.jsx +++ b/src/TodoHeader.jsx @@ -5,10 +5,10 @@ import { useState } from "react"; // TodoHeader의 색상이 올바르게 업데이트되도록 수정해주세요. // 힌트: 필요 없는 state는 제거하세요. export default function TodoHeader(props) { - const [color, setColor] = useState(props.color); return (
-

Todo List

+

Todo List

); -} \ No newline at end of file +} +// color props 직접 사용 \ No newline at end of file