Udemy React 강의 160번 정리
이번 강의의 핵심은 크게 두 가지.
가능은 함.
하지만 여기서는 React가 DOM을 제어하도록 두는 연습을 하기 위해 state를 사용함.
import { useState } from 'react';
export default function NewTask({ onAdd }) {
const [enteredTask, setEnteredTask] = useState('');
function handleChange(event) {
setEnteredTask(event.target.value);
}
function handleClick() {
// 1. 먼저 입력된 값을 App 컴포넌트로 보내기
// 2. 이 입력란을 빈 칸으로 리셋하기
onAdd(enteredTask);
setEnteredTask('');
}
return (
<div className="flex items-center gap-4">
<input
type="text"
className="w-64 px-2 py-1 rounded-sm bg-stone-200"
onChange={handleChange}
value={enteredTask}
/>
<button
className="text-stone-700 hover:text-stone-950"
onClick={handleClick}
>
Add Task
</button>
</div>
);
}
즉, 입력값을 직접 DOM에서 조작하지 않고, state로 관리.
NewTask
↓ (onAdd)
Tasks
↓
SelectedProject
↓
App (handleAddTask)
이게 바로 prop drilling임.
필요한 컴포넌트가 아닌데도 단지 전달만 하기 위해 props를 계속 내려보내는 것
App
└─ SelectedProject
└─ Tasks
└─ NewTask (여기서 실제로 사용)
중간 컴포넌트들이 점점 지저분해짐
이 강의에서는 Task 기능을 구현하는 것보다 state를 어디에 두어야 하는지와 prop drilling이 왜 불편해지는지를 직접 체감하는 게 핵심이었다.
다음 강의에서는 이 문제를 더 깔끔하게 해결하는 방법을 배운다.