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