React는 컴포넌트 기반의 JavaScript 라이브러리로, 컴포넌트들을 조합하여 애플리케이션을 구축할 수 있도록 도와줍니다. React의 기능 중 하나인 React.forwardRef()
를 사용하면, 컴포넌트 트리 구조를 쉽게 구현할 수 있습니다.
컴포넌트 트리(Tree)란?
컴포넌트 트리는 React 애플리케이션에서 컴포넌트들이 계층적으로 구성된 구조를 말합니다. 일반적으로 사용자 인터페이스(UI)를 구성하는 컴포넌트들은 트리 구조로 구성되어 있습니다. 부모 컴포넌트는 자식 컴포넌트를 포함하며, 자식 컴포넌트는 다시 더 깊은 수준의 자식 컴포넌트를 가질 수 있습니다.
React.forwardRef()란?
React.forwardRef()
는 Ref 전달을 지원하기 위해 사용되는 React의 고급 기능입니다. Ref는 React 컴포넌트 인스턴스나 DOM 요소에 대한 참조를 포함하는 객체입니다. React.forwardRef()
를 사용하면, 인자로 주어진 함수 컴포넌트에 Ref를 전달할 수 있습니다.
React.forwardRef()를 통한 컴포넌트 트리 구조 구현 방법
React.forwardRef()를 사용하여 컴포넌트 트리 구조를 구현하는 방법은 다음과 같습니다.
- 부모 컴포넌트에서
forwardRef()
를 사용하여 자식 컴포넌트에 Ref를 전달합니다.const ChildComponent = React.forwardRef((props, ref) => { // 자식 컴포넌트의 내용 // ref를 사용하여 DOM 요소에 접근할 수 있음 return <div ref={ref}>자식 컴포넌트</div> });
- 부모 컴포넌트에서 Ref 객체를 생성합니다.
const parentRef = React.createRef();
- 부모 컴포넌트에서 자식 컴포넌트에 Ref를 전달합니다.
<ChildComponent ref={parentRef} />
- 자식 컴포넌트에서 전달받은 Ref를 사용하여 DOM 요소에 접근할 수 있습니다.
const ChildComponent = React.forwardRef((props, ref) => { return <div ref={ref}>자식 컴포넌트</div> });
위와 같이 React.forwardRef()
를 사용하여 자식 컴포넌트에 Ref를 전달하고, 자식 컴포넌트 내에서 Ref를 사용하여 DOM 요소에 접근할 수 있습니다. 이를 활용하여 컴포넌트 트리 구조를 구현할 수 있습니다.
예제 코드
아래는 React.forwardRef()
를 사용하여 컴포넌트 트리 구조를 구현하는 예제 코드입니다.
import React from 'react';
const LeafComponent = React.forwardRef((props, ref) => {
return <div ref={ref}>Leaf Component</div>;
});
const BranchComponent = () => {
const leafRef = React.useRef();
const handleClick = () => {
console.log(leafRef.current);
};
return (
<div>
<LeafComponent ref={leafRef} />
<button onClick={handleClick}>Log leafRef</button>
</div>
);
};
export default BranchComponent;
위 예제 코드에서 LeafComponent
는 React.forwardRef()
를 사용하여 Ref를 전달 받습니다. BranchComponent
에서는 useRef()
를 사용하여 LeafComponent
에 접근할 수 있는 Ref를 생성하고, 버튼을 클릭하여 Ref를 로그에 출력할 수 있습니다.
요약
React.forwardRef()
를 사용하면, React 애플리케이션에서 컴포넌트 트리 구조를 쉽게 구현할 수 있습니다. forwardRef()
함수를 사용하여 Ref를 전달하고, Ref를 사용하여 DOM 요소에 접근할 수 있습니다. 이를 활용하면 컴포넌트들을 계층적으로 구성할 수 있는 강력한 기능을 활용할 수 있습니다.