문득 든 의문점

[ React ] props는 argument와 어떤 차이를 가질까?

OnnJE 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를 전달받습니다.

반응형