내가 만든 컴포넌트에 ref를 달고 싶었다.
하지만 다음과 같은 에러가 . . .
Warning: Function components cannot be given refs.
Attempts to access this ref will fail. Did you mean to use React.forwardRef()?
useRef는 알아도 forwardRef는 뭐지?!
forwardRef에 대해 알아보자!
먼저 ref란 무엇인지 간략하게 말해보자.
ref는 React에서 HTML엘리먼트에 접근하기 위해 사용한다.
(마치 자바스크립트의 셀렉터처럼 . . . )
더 자세한 useRef를 알고싶다면 👇
https://mandelina-code.tistory.com/86
하지만, 함수형 컴포넌트에선 class컴포넌트와 달리 인스턴스가 없기 때문에 ref를 사용할 수 없다고 한다.
HTML Element 접근이라는 특수한 용도로 사용하기 때문이다.
해결방법
forwardRef 를 사용하면 된다.
[예제]
export const EmailInput = forwardRef(function EmailInput(
{ value, onChange },
ref
) {
return (
<LabelStyle>
이메일
<InputStyle
placeholder='이메일 주소를 입력해주세요.'
type='email'
name='userEmail'
ref={ref}
value={value}
onChange={onChange}
/>
</LabelStyle>
);
});
forwardRef로 감싸서 사용하면 된다.
이때 props로 받는 다른 인자는 왼쪽에, ref는 오른쪽에 따로 빼주어야 한다.
참고자료 : https://ko.reactjs.org/docs/forwarding-refs.html
'에러해결하기' 카테고리의 다른 글
[React] unique한 key 값을 생성해주는 uuid 라이브러리 (1) | 2022.10.05 |
---|---|
[React Error] missing in props validation (0) | 2022.07.05 |
[React Error] React 깃허브 배포시 흰화면 뜨는 에러 (0) | 2022.06.14 |
[React Error] 프로젝트 이름 에러 ( name can no longer contain capital letters..) (0) | 2022.06.13 |