지금까지 만든 코드는 각 prop의 값만 다르고 반복적이기 때문에 javascript의 iteration을 이용해서 코드를 정리해줄 수 있음~
코드의 다른 부분은 객체 배열을 사용해서 데이터를 만들어줌.
const DATA = [
{ id: "todo-0", name: "Eat", completed: true },
{ id: "todo-1", name: "Sleep", completed: false },
{ id: "todo-2", name: "Repeat", completed: false },
];
그리고 DATA를 <App />에 tast라는 prop으로 전달해주는데, src/main.jsx 내부에서 <App /> 구성 요소 호출을 아래 코드와 같이 업데이트 해줌. DATA 배열은 이제 App 구성 요소 내부에서 props.tasks로 사용할 수 있음.
<App tasks={DATA} />
반복을 통한 렌더링
객체 배열을 렌더링하려면 <Todo /> 구성 요소로 변환하기 위해 Array.prototype.map() 메서드를 이용함.
App()의 return문에 taskList라는 변수를 만들고, props.tasks 배열의 할 일을 name으로 변환해봄~
const taskList = props.tasks?.map((task) => task.name);
<ul>의 모든 자식요소를 taskList로 바꿔보면,
<ul
role="list"
className="todo-list stack-large stack-exception"
aria-labelledby="list-heading">
{taskList}
</ul>
누락된 <li>와 체크박스 및 버튼을 만들어주기 위해 map() 함숫에서 <Todo /> 컴포넌트를 반환하는 코드를 만들어 줌.
const taskList = props.tasks.map((task) => <Todo />);
이게 아래와 같이 <Todo /> 컴포넌트에 전달하는 id, name, completed 속성을 적어줌
const taskList = props.tasks.map((task) => (
<Todo id={task.id} name={task.name} completed={task.completed} />
));
728x90
반응형
'WWWEB > react(&작심삼주)' 카테고리의 다른 글
(react-ToDoList) 에디팅, 필터링 기능 추가 (1) | 2024.12.04 |
---|---|
(react) 작업된 소스 합치기 (4) | 2024.11.27 |
(react) Events & state 처리해보기 (1) | 2024.11.26 |
(react) 컴포넌트 만들기4 (0) | 2024.11.25 |
(react) 컴포넌트 만들기 2 (0) | 2024.11.23 |
(react) 컴포넌트로 만들기 (0) | 2024.11.22 |
(react) Todo List App 단계별 만들기 (0) | 2024.11.21 |
(react) create react app (1) | 2024.11.20 |
댓글