[TIL] forwardRef

이진호·2024년 2월 7일
0

TIL

목록 보기
63/66

최종 프로젝트를 진행하면서 팀원이 구현하던 코드를 보던 중에 forwardRef라는 함수를 사용했다. 이 함수가 어떤 행위를 하는지 몰라서 찾아봤다.


리액트 공식문서에서는 forwardRef는 특정 컴포넌트의 부모 컴포넌트에게 ref와 함께 DOM node를 노출시킨다고 한다.

다음은 예제 코드이다.

// Form file
function Form() {
  const ref = useRef(null);

  function handleClick() {
    ref.current.focus();
  }

  return (
    <form>
      <MyInput label="Enter your name:" ref={ref} />
      <button type="button" onClick={handleClick}>
        Edit
      </button>
    </form>
  );
}

// MyInput file
import { forwardRef } from 'react';

const MyInput = forwardRef(function MyInput(props, ref) {
  const { label, ...otherProps } = props;
  return (
    <label>
      {label}
      <input {...otherProps} ref={ref} />
    </label>
  );
});

예제 코드를 보아하니 원래 부모 컴포넌트에서 ref를 내려주기 위해서는 기본적으로 inputRef와 같은 방식으로 따로 props를 받아서 사용했던 것 같은데 바로 ref에 값으로 넣어서 조작할 수 있는 것을 의미하는 것 같다.

// 원래라면 이런식으로..
function MyInput({inputRef}) {
  return <input ref={inputRef}/>
}

크게 어려운 개념은 아닌 것 같고, 조금더 명확하게 ref라는 것을 명확하게 표시하기 위한 장치로 보인다.

profile
dygmm4288

0개의 댓글