Forwading Refs
next.js를 사용하던 중 next/link의 Link
에서 forwarding Ref를 사용하라는 에러를 받았다.
그래서 알아보기로 하였다.
DOM 에 ref 전달하기
아래 코드는 button
DOM 요소를 렌더링하는 FancyButton
컴포넌트이다.
1 | function FancyButton(props) { |
FancyButton
컴포넌트의 경우 button
이나 input
같은 DOM요소와 같이 어플리케이션 전체에 걸쳐서 재사용될 것이다.
그리고 포커스, 선택, 애니메이션을 관리하기 위해서는 이런 DOM 노드에 접근하는 것이 불가피하다.
React.forwardRef
React.forwardRef
를 이용하면 ref를 button
DOM 요소로 직접 전달할 수 있다.
1 | const FancyButton = React.forwardRef((props, ref) => ( |
요약
ref를 전달하기 위해선 ref
라는 속성명 외의 다른 속성명을 사용해서 전달해야 한다.
하지만 React.forwardRef
를 사용하면 ref를 props로 전달할 수 있다!
주의사항
컴포넌트 라이브러리에서 fowardRef를 사용하기 시작할 때 변경사항으로 간주하고 새로운 중요 버전을 릴리즈해야한다.
또한 forwardRef가 존재할 때 조건부로 적용하는 것도 권장되지 않는다.