이 영역을 누르면 첫 페이지로 이동
Nuhends 의 Tech Life 블로그의 첫 페이지로 이동

Nuhends 의 Tech Life

페이지 맨 위로 올라가기

Nuhends 의 Tech Life

IT / Tech / 재테크 관련 뉴스를 최대한 알기 쉽게 전달하는 Tech 블로그 입니다.

[React] Forwarding Refs 로 refs 전달하기

  • 2021.10.13 22:34
  • 프로그래밍/React
반응형

[React] Forwarding Refs 로 refs 전달하기

React.forwardRef 사용법


이전 포스팅에서 알아본 것 처럼, 상위 컴포넌트에서 자손 컴포넌트의 DOM을 컨트롤하기 위해 ref를 전달하는 방법엔 여러가지가 있다.

그 중, React 16.3 이후 버전일 경우 사용할 수 있는 React.forwardRef에 대해 알아보려고 한다.

 

* ref의 기본 사용방법을 알아보려면 이전 포스팅을 참고

 

[React] React.createRef() 에 대한 정리

[React] React.createRef() 에 대한 정리 React 프로젝트 실무를 하면서 Ref 를 많이 사용하였지만 세부적으로 학습한 적이 없었다. 이번 포스팅에서 Ref 에 관해서 공식 문서에서 공부한 내용을 바탕으

nuhends.tistory.com

 


React.forwardRef 사용 방법

FancyButton 은 React.forwardRef를 사용하여 전달된 ref를 얻고,

렌더링 되는 DOM button을 ref로 전달합니다.

 

원래 함수형 컴포넌트 인스턴스에는 ref를 할당할 수 없었지만, React.forwardRef를 사용하게 되면, 렌더링 되는 DOM node를 ref에 할당 가능하게 된다(클래스형 컴포넌트에 ref를 할당한 것과 비슷)

 

React.forwardRef 동작 과정

  1. React.createRef() 를 통해 ref 객체를 생성하고 buttonRef 변수에 할당
  2. ref를 JSX 속성으로 지정하여 <FancyButton ref={ref} /> 로 전달
  3. React는 이 ref를 forwardRef 내부의 (props, ref) => ... 함수의 두 번째 인자로 전달
  4. 이 ref를 JSX 속성으로 지정해서 <button ref={ref} /> 로 전달
  5. ref가 첨부되면 ref.current 는 <button> DOM 노드를 가리키게 된다.

 

반응형

 

HOC (고차원 컴포넌트)에서 ref 전달하기

예시로 만든 "logProps" HOC는 모든 props를 wrapping하는 컴포넌트로 전달하므로 렌더링 된 결과가 동일하게 된다.

이 HOC를 사용하여 "FancyButton" 컴포넌트로 전달하는 모든 props를 기록 할 수 있다.

 

하지만 주의해야 할 점은 ref는 prop이 아니기 때문에 전달되지 않는다는 점이다. 

(React에서 key 속성을 처리하는 것처럼 ref 또한 다르게 처리한다)

 

위 예제처럼 React.forwardRef API를 사용하여 FancyButton 컴포넌트에 대한 ref를 명시적으로 전달할 수 있다.

 


 

이 포스팅은 React 공식 문서(Forwarding Refs)을 기반으로 작성하였습니다.

https://ko.reactjs.org/docs/forwarding-refs

 

Forwarding Refs – React

A JavaScript library for building user interfaces

ko.reactjs.org

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'프로그래밍 > React' 카테고리의 다른 글

[react-router-dom] Link, NavLink 차이점 정리, 리액트 라우터  (0) 2021.10.18
[React] React.createRef() 에 대한 정리  (0) 2021.10.13

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [react-router-dom] Link, NavLink 차이점 정리, 리액트 라우터

    [react-router-dom] Link, NavLink 차이점 정리, 리액트 라우터

    2021.10.18
  • [React] React.createRef() 에 대한 정리

    [React] React.createRef() 에 대한 정리

    2021.10.13
다른 글 더 둘러보기

정보

Nuhends 의 Tech Life 블로그의 첫 페이지로 이동

Nuhends 의 Tech Life

  • Nuhends 의 Tech Life의 첫 페이지로 이동
반응형

검색

메뉴

  • 홈
  • 웹 개발
  • 경제 데이터
  • 경제 공부
  • 방명록

카테고리

  • 분류 전체보기 (127)
    • 프로그래밍 (69)
      • React (3)
      • HTML&CSS 사전 (13)
      • JAVASCRIPT 사전 (11)
      • Algorithm (23)
      • 이슈 정리 (2)
      • 개발 환경 (4)
      • NodeJS (1)
      • Typescript (4)
      • NextJS (5)
      • React-Query (2)
      • ai (1)
    • 경제 데이터 (22)
      • 주식 순위 (20)
      • 경제지표 (2)
    • 경제 공부 (25)
      • 경제 신문 읽기 (3)
      • 세금 재테크 (7)
      • 인사이트 (4)
      • 경제용어정리 (9)
      • 정부 지원 제도 관련 (2)
    • 팁 모음 (11)
      • 인터넷 (5)
      • 생활 (3)
      • SNS 맛집 (3)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 코딩테스트
  • javascript
  • 코테 풀이
  • 코테
  • 알고리즘
  • 자바스크립트
  • softeer
  • 프로그래머스

나의 외부 링크

정보

nuhends의 Nuhends 의 Tech Life

Nuhends 의 Tech Life

nuhends

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © nuhends. Designed by Fraccino.

티스토리툴바