한번쯤 들어본 FE 기술
데이터 흐름과 props
프론트루나
2025. 3. 12. 07:57
반응형
컴포넌트에 props 전달하기
- 부모 컴포넌트에서 전달받을 인자를 Avatar({person, size}) 이렇게 표현 !!!
- == function Avatar(props) { // 구조분해할당 let person = props.person; .. }
- props를 전달하지않거나, undefinded로 전달 되었을때 기본값이 사용된다.
function Avatar({person, size = 100})
https://ko.react.dev/learn/passing-props-to-a-component
부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달하는 방법
const Parent = () => {
return <Child name="김루나" age={20}/>;
}
const Child = (props) => {
return (
<div>
이름 : {props.name}, 나이 : {props.age}
</div>
)
}
// 구조분해할당을 사용
const Child = ({name, age}) => {
return (
<div>
이름 {name}, 나이 : {age}
</div>
)
}
단방향 데이터 흐름
리액트는 단방향 데이터 흐름을 따릅니다. 데이터는 부모에서 자식으로만 전달됩니다. 자식이 부모의 상태를 변경하려면 부모가 함수를 props로 전달해야함.
const Parent = () => {
const [count, setCount] = useState(0);
return <Child count={count} onIncrement={()=> setCount(count+1)}/>;
}
const Child = ({count, onIncrement})=> {
return (<div>
카운트 : {count}
<button onClick={onIncrement}>증가</button>
</div>)
}
props는 기본적으로 “변경할 수 없다”라는 의미의 불변성을 가지고 있다. 컴포넌트가 props를 변경해야하는 경우, 부모 컴포넌트에 다른 props, 즉 새로운 객체를 전달하도록 “요청”해야한다.
그러면 이전의 props는 버려지고, 결국 자바스크립트 엔진은 기존 props가 차지했던 메모리를 회수하게 된다. “props 변경”을 시도하지말고, State의 setState를 사용하면 된다.
반응형