일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- getUTCDate
- RTK Query
- React API 참고서
- 고급안내서
- Render Props
- background tab
- CSS
- react hook
- Nextjs React 18
- react
- context
- background setInterval
- React 고급 안내서
- Programmers
- notFound()
- Javascript
- Babel
- React 18
- Next13
- React 고급안내서
- Nextjs
- React 18 Nextjs
- react-helmet
- React 공식문서
- React18
- next13 head
- codingtest
- hook
- background: url
- background setttimeout
Archives
- Today
- Total
akjfal
Ref 전달하기 본문
Ref전달은 컴포넌트를 통해 자식 중 하나에 ref를 전달하는 기법입니다. 일반적으로 사용되지 않지만, 재사용이 가능한 컴포넌트에 유용할 수 있습니다.
DOM에 refs 전달하기
button, input등의 ref를 조작할 필요가 있을 수 있습니다. 이러한 경우에는
const FancyButton = React.forwardRef((props, ref) => (
<button ref={ref} className="FancyButton">
{props.children}
</button>
));
const ref = React.creatRef();
<FancyButton ref={ref}>click me</FancyButton>
- React.createRef 를 통해서 React ref를 생성하고 ref변수에 할당합니다.
- ref={ref} 로 전달합니다.
- props 내부에서 함수의 두번째 인자로 전달합니다.
- 속성을 지정해서 <Button ref={ref}>로 전달합니다.
- 이렇게 되면 ref.current 는 <Button>을 가르키게 됩니다.
단! ref인자는 정의한 경우에만 사용할 수 있습니다. 일반 함수나 컴포넌트의 경우 ref를 받지도 않고, 사용할 수 도 없습니다.
고차 컴포넌트HOC에서 ref전달하기
key와 마찬가지로 ref는 React에서 다르게 처리합니다. HOC에 ref를 추가하면 ref는 래핑 된 컴포넌트가 아닌 가장 바깥쪽 컨테이너 컴포넌트를 참조합니다.
하지만 React.forwardRef API를 사용하여 내부 컴포넌트에 ref를 선언을 통해 명시적으로 전달할 수 있습니다.
DevTools에 사용자 정의 이름 표시하기
React.forwardRef는 렌더링 함수를 받는데 이를 이용하여 전달 컴포넌트에 무엇을 표시할지 정의할 수 있습니다.
const WrappedComponent = React.forwrdRef((props, ref)=>return<Log forswardedRef={ref}>);
이때 익명함수가 아닌 렌더링 함수 이름을 지정할 수도 있습니다.
이러한 방법 말고도 displayName속성을 설정할 수도 있습니다.
function forwardRef((props, ref){ return <LogProps {...props} forwardRef={ref} />}
forwardRef.displayName = 'nameing'
'(구)React 공식문서 > 고급 안내서' 카테고리의 다른 글
고차 컴포넌트 (0) | 2023.02.16 |
---|---|
Fragment (0) | 2023.02.16 |
Error Boundaries (0) | 2023.02.16 |
Context (0) | 2023.02.16 |
코드 분할 (0) | 2023.02.16 |
Comments