상황
ref 를 사용하여 if에서 오류시 textarea에 포커싱을 주도록 설정하였으나 오류가 발생하였다.
import React, { useRef } from 'react'; //1.선언
const contentInput = useRef(); //2.useRef();
...
if (!values.content) {
contentInput.current.focus(); //3. ref 사용
}
...
<TextArea
title='내용'
type='text'
...
ref={contentInput} //4. ref 설정
/>
오류문구
Warning: TextArea: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop.... |
원인
ref는 prop으로 전달하지 못하기 때문에, forwardRef을 사용하여 함수형컴포넌트 두번째 인자로 ref prop으로 전달이 가능한 것이다.
해결
컴포넌트 ] props를 받아서 하는 파일에 forwardRef()로 감싸주어야 ref가 적용이 된다.
const 로 작성시)
import React, { forwardRef } from 'react';
const TextArea = forwardRef(
({ title, .. }, ref) => {
return (
<label>
<p>{title}</p>
<textarea
...
ref={ref}
/>
</label>
);
}
);
export default TextArea;
function 으로 작성시)
import React, { forwardRef } from 'react';
export default forwardRef(function TextArea(
{ title, type... },
ref
) {
return (
<label>
<p>{title}</p>
<textarea
type={type}
...
ref={ref}
/>
</label>
);
});
'React > error' 카테고리의 다른 글
[React] .env 적용안되는 오류 (1) | 2023.02.24 |
---|---|
[React] npm i 에러 해결(--force, --legacy-peer-deps) (0) | 2023.02.23 |
[React] 회원가입 API- axios Error 처리 중 정해진 message를 띄우기 (0) | 2023.02.20 |
[React] ReactDOM.render 오류 :ReactDOM.render is no longer supported in React 18.. (0) | 2023.02.01 |
[React] react-router-dom 버전 오류: export 'Routes' (imported as 'Routes') was not found in 'react-router-dom' (0) | 2023.02.01 |