버튼을 렌더링하는 컴포넌트
⇒ 해당 컴포넌트는 높은 응집도를 지닌다
상위 수준 컨테이너 컴포넌트와 하위 수준 프레젠테이션 컴포넌트로 구성된 구조
⇒ 두 컴포넌트는 낮은 결합도를 보인다
<aside> 💡 높은 응집도, 낮은 결합도를 기억하자
</aside>
import React, { useState } from 'react';
// 할일 목록 항목 컴포넌트
function TodoItem({ text, onDelete }) {
return (
<div>
<span>{text}</span>
<button onClick={onDelete}>삭제</button>
</div>
);
}
// 할일 목록 컴포넌트
function TodoList() {
const [todos, setTodos] = useState([
'React 공부하기',
'컴포넌트 설계하기',
'상태 관리 구현하기',
]);
// 할일 삭제 함수
const deleteTodo = (index) => {
const newTodos = [...todos];
newTodos.splice(index, 1);
setTodos(newTodos);
};
return (
<div>
<h2>할일 목록</h2>
<ul>
{todos.map((todo, index) => (
<li key={index}>
<TodoItem text={todo} onDelete={() => deleteTodo(index)} />
</li>
))}
</ul>
</div>
);
}
export default TodoList;