-
[ React ] props는 argument와 어떤 차이를 가질까?문득 든 의문점 2023. 3. 28. 13:30반응형
의문점
위 이미지는 react quick start의 share data between component 부분에서 제공하며, 다른 두 버튼에서 하나의 count값을 사용하는 예시의 이해를 돕습니다. 아래 코드는 이와 관련된 react 코드입니다.
import { useState } from 'react'; export default function MyApp() { const [count, setCount] = useState(0); function handleClick() { setCount(count + 1); } return ( <div> <h1>Counters that update together</h1> <MyButton count={count} onClick={handleClick} /> <MyButton count={count} onClick={handleClick} /> </div> ); } function MyButton({ count, onClick }) { return ( <button onClick={onClick}> Clicked {count} times </button> ); }
이 코드를 보며 든 생각은 버튼을 클릭하는 이벤트에 대한 처리는 MyButton에서 이루어지며, 따라서, 전달된 count는 MyButton이 생성한 lexical environment의 지역변수로 복사 및 추가되고 따라서 데이터 공유는 불가능해야 하는 것 아닌가였습니다.
결론
count 변수는 props로서 MyButton에 전달됩니다. 즉, Mybotton은 이러한 props를 통해 부모인 MyApp의 count에 접근 가능하게 되는 것입니다.
props는 함수에 전달되는 argument와는 다릅니다. argument는 함수 호출될 때 전달되어 지역변수화한 뒤 함수의 연산을 돕지만, 리액트의경우 component를 호출하는 대신 렌더링 하며, compoenet가 렌더릴될때 각 component는 부모 component로 부터 props를 전달받습니다.
반응형'문득 든 의문점' 카테고리의 다른 글
[ React ] 모듈 번들러 없이 [ import { } from 'react' ] 구문이 작동하는 이유는 뭘까? (0) 2023.04.01 [ CSS ] 가상 요소(::before, ::after)를 써서 얻을 수 있는 이득은 무엇일까? (0) 2023.03.10 [ JS ] JS의 Array와 자료 구조 관점에서 Array의 차이는? (0) 2023.01.05 [ 자료구조 ] linked list의 삽입/삭제는 정말 array list보다 빠른가? (1) 2023.01.05 [JS] cachingdecorator 에서 어떻게 Map으로 저장한 데이터가 유지될까? (0) 2022.12.15