Po_tta_tt0
콩심콩 팥심팥 🌱
Po_tta_tt0
전체 방문자
오늘
어제
  • 분류 전체보기 (266)
    • 🐛 회고 (14)
    • 💭 생각 (2)
    • 🤸‍♀️ 내 프로젝트 (16)
      • FISH-NEWS (8)
      • MBTI 과몰입 테스트 (2)
      • twitter clonecoding with TS (4)
      • pilzagenda (2)
    • 👨‍👩‍👧‍👦 팀 프로젝트 (2)
      • 피우다 프로젝트 (0)
      • SEMO(세상의 모든 모임) (1)
      • 마음을 전하는 텃밭 (1)
      • Stackticon (0)
    • 👨‍💻 CS지식 (11)
    • ✍ 공부 (94)
      • JavaScript (21)
      • TypeScript (39)
      • Html (0)
      • CSS (2)
      • React (18)
      • NextJS (7)
      • Vue (1)
      • Python (1)
      • Django (0)
      • 개발환경 & 그 외 (2)
    • 🏄‍♀️ 코딩테스트 (99)
      • 🐍 Python (99)
    • 🐙 Git & GitHub (3)
    • 📑 오류기록 (8)
    • 📚 우리를 위한 기록 (9)
    • 수업 (3)
    • 강의 등 (2)
    • 👩‍🎓 SSAFY (0)
    • 👋 우테코 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 파이썬
  • 파이썬 다익스트라
  • 파이썬 감시 피하기
  • 문자열
  • dfs
  • 백준 파이썬
  • Next.js
  • 백준 숨바꼭질
  • 이분탐색
  • BFS + DP
  • js
  • DP
  • 구현
  • react-router-dom
  • 백준
  • bfs
  • React
  • 플로이드 워셜
  • 시뮬레이션
  • 자바스크립트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Po_tta_tt0

콩심콩 팥심팥 🌱

✍ 공부/React

함수형 컴포넌트로 ref 보내기 | forwardRef에 대해 알아보자

2022. 6. 12. 18:16
반응형

 

 

 

 

과제테스트 중 forwardRef라는 것을 발견하고(시험 내용 아님!! 그냥 코드에 적혀진걸보고 궁금해서 공부함!!)
이게 뭐지..? 하면서 알아보았다

 

 

✍ forwardRef

함수 컴포넌트가 있다.
이 안에 있는 input에 포커스를 맞추기 위해서 우리는 useRef을 종종 사용한다.

하지만 일반적인 input이 아니라, Input Component라면?

이 때도 useRef을 사용해서 포커스를 줄 수 있을까?

 

정답은 불가능.

함수 컴포넌트는 ref를 받을 수 없다.
= props.ref는 사용이 불가능하다.


이유가 뭘까 ❓

=> 함수 컴포넌트는 인스턴스가 없기 때문에

=> 따라서, forwrdRef가 필요하다

 

언제?

React.forwardRef는 전달받은 ref을 하부 트리 내의 다른 컴포넌트로 전달하는 React 컴포넌트를 생성한다.
일반적으로는 잘 사용되지 않지만

  • DOM element로 ref 전달
  • 고차 컴포넌트(Higher Order Component)로 ref 전달
    에서는 유용하게 사용된다.

react.forwardRef는

  • 렌더링에 사용될 함수를 일자로 받고
  • React는 이 함수를 props와 ref을 사용하여 호출
  • 함수는 React 노드를 반환한다
// ✨ 2
const FancyButton = React.forwardRef((props, ref) => (
  <button ref={ref} className="FancyButton">
    {props.children}
  </button>
));

// ✨ 1
// You can now get a ref directly to the DOM button:
const ref = React.createRef();
<FancyButton ref={ref}>Click me!</FancyButton>;

✨ 1
예제 1번을 보면 FancyButton이라는 함수형 컴포넌트에 ref을 전달해준다.
=> 이렇게만 하면 작동하지 않는다. 함수 컴포넌트는 인스턴스가 없어서!

✨ 2
따라서 FancyButton 컴포넌트에 React.forwardRef을 묶어주고, props와 ref을 전달해준 후
원하는 엘리먼트에 ref을 달아주면
ref.current는 button이라는 DOM 엘리먼트 인스턴스를 직접 가리킨다.

 

 

 

 

 

 

 

💛
React 공식문서

반응형

'✍ 공부 > React' 카테고리의 다른 글

React는 어떻게 동작할까?_리액트가 동작하는 방식  (0) 2022.07.18
[ 🐱‍💻 강의 노트 ] React 완벽 가이드 강의 정리 섹션 10 | 리듀서(Reducer)을 사용하여 부작용 처리 & 컨텍스트 API(Context) 사용하기  (0) 2022.06.12
React 프로젝트 구조 잡기  (0) 2022.06.08
[ 🐱‍💻 강의 노트 ] React 완벽 가이드 강의 정리 섹션 27 | React + TypeScript 사용하기  (0) 2022.06.01
[ 🐱‍💻 강의 노트 ] React 완벽 가이드 강의 정리 섹션 29 | 리엑트 요약 및 핵심 기능  (0) 2022.05.31
    '✍ 공부/React' 카테고리의 다른 글
    • React는 어떻게 동작할까?_리액트가 동작하는 방식
    • [ 🐱‍💻 강의 노트 ] React 완벽 가이드 강의 정리 섹션 10 | 리듀서(Reducer)을 사용하여 부작용 처리 & 컨텍스트 API(Context) 사용하기
    • React 프로젝트 구조 잡기
    • [ 🐱‍💻 강의 노트 ] React 완벽 가이드 강의 정리 섹션 27 | React + TypeScript 사용하기
    Po_tta_tt0
    Po_tta_tt0
    감자의 코딩하는 블로그 콩심은데 콩나고 팥심은데 팥난다

    티스토리툴바