property
의 약자로 리액트에서는 속성이라는 뜻으로 사용됩니다.
리액트에서 상위 컴포넌트가 하위 컴포넌트에 값을 전달할 때 사용하는 속성입니다.
상위 컴포넌트가 하위 컴포넌트에 값을 전달하기 때문에 단방향 데이터 흐름을 갖습니다.
부모 컴포넌트는 수정 가능하지만, 자식 컴포넌트는 읽기만 가능합니다.
props
는 단방향 데이터 흐름이므로 부모에서 자식으로만 데이터가 흐르며, 자식 컴포넌트는 전달받은 데이터를 수정할 수 없습니다.props
는 읽기 전용이며, 자식 컴포넌트에서 이를 변경하려고 하면 안됩니다.모든 리액트 컴포넌트는
props
를 직접 바꿀 수 없고, 같은props
에 대해서는 항상 같은 결과를 보여줍니다.
function ParentComponent() {
const userName = "MinJae";
return <ChildComponent name={userName} />;
}
function ChildComponent({ name }) {
return <p>Hello, {name}!</p>;
}
위 예시에서는 ParentComponent
가 useName
이라는 변수 값을 자식 컴포넌트인 ChildComponent
로 전달합니다. 이때, name
이라는 props
가 사용되며, 자식 컴포넌트는 props
로 받은 값을 그대로 표시합니다. 결과적으로 화면에는 "Hello, MinJae!"라는 문구가 출력됩니다.
물론 복수의 props
도 전달할 수 있습니다.
function ParentComponent() {
const userName = "MinJae";
const userAge = 27;
return <ChildComponent name={userName} age={userAge} />;
}
function ChildComponent({ name, age }) {
return <p>{name} is {age} years old.</p>;
}
이 예시에서는 ParentComponent
가 name
과 age
두 가지 값을 props
로 자식 컴포넌트에 전달합니다. ChildComponent
는 전달받은 두 가지 값을 각각 사용하여 "MinJae is 27 years old."라는 문구를 출력합니다. 이처럼 props
를 통해 여러 값을 동시에 전달할 수 있습니다.
이런 방식으로
props
를 통해 부모 컴포넌트에서 자식 컴포넌트로 데이터를 손쉽게 전달이 가능하며, 단방향 데이터 흐름을 유지하게 됩니다.
props
: 부모 컴포넌트로부터 전달받은 값. 자식 컴포넌트에서 수정 불가능state
: 컴포넌트 자체에서 관리하는 값. 컴포넌트 내부에서 수정 가능✅ 참고