반응형
렌더 프로퍼티(Render Props) 패턴 소개
렌더 프로퍼티(Render Props) 패턴은 React에서 컴포넌트 간 코드 재사용을 위한 강력한 패턴 중 하나입니다. 이번 글에서는 렌더 프로퍼티 패턴의 개념과 활용 방법에 대해 알아보겠습니다.
렌더 프로퍼티란?
렌더 프로퍼티는 컴포넌트가 렌더링될 때 자식 컴포넌트에게 함수를 전달하는 패턴입니다. 이 함수는 자식 컴포넌트가 실행하고 자신의 결과를 부모 컴포넌트에게 반환합니다. 이를 통해 부모 컴포넌트는 자식 컴포넌트의 동작을 제어하고 상태를 전달할 수 있습니다.
렌더 프로퍼티의 활용
import React from 'react';
// 렌더 프로퍼티를 활용한 컴포넌트
class Mouse extends React.Component {
state = { x: 0, y: 0 };
handleMouseMove = (event) => {
this.setState({
x: event.clientX,
y: event.clientY
});
};
render() {
return (
<div style={{ height: '100vh' }} onMouseMove={this.handleMouseMove}>
{/* 렌더 프로퍼티를 이용해 자식 컴포넌트에 상태 전달 */}
{this.props.render(this.state)}
</div>
);
}
}
// 렌더 프로퍼티를 이용한 자식 컴포넌트
const Cat = ({ x, y }) => (
<img src="/cat.png" alt="cat" style={{ position: 'absolute', left: x, top: y }} />
);
// 사용 예시
const App = () => (
<div>
<h1>Move the mouse around!</h1>
{/* Mouse 컴포넌트에 렌더 프로퍼티를 전달하여 Cat 컴포넌트를 렌더링 */}
<Mouse render={({ x, y }) => <Cat x={x} y={y} />} />
</div>
);
장점
- 코드 재사용성: 렌더 프로퍼티를 통해 컴포넌트 로직을 여러 컴포넌트에서 재사용할 수 있습니다.
- 컴포넌트 간 추상화: 렌더 프로퍼티를 통해 부모 컴포넌트는 자식 컴포넌트의 동작을 추상화하여 제어할 수 있습니다.
주의할 점
- 렌더 프로퍼티 패턴을 사용할 때는 적절한 컴포넌트 구조를 설계하는 것이 중요합니다. 지나치게 중첩된 렌더 프로퍼티는 코드를 이해하기 어렵게 만들 수 있습니다.
- 렌더 프로퍼티 패턴은 컴포넌트 간의 결합도를 높일 수 있습니다. 이를 줄이기 위해 필요한 경우 컨테이너 컴포넌트를 활용하는 것이 좋습니다.
마무리
렌더 프로퍼티 패턴은 React 애플리케이션에서 컴포넌트 간 코드 재사용성을 높이고 추상화 수준을 조절하는 데 유용한 패턴입니다. 그러나 사용에 주의를 기울여야 하며, 필요한 경우 다른 패턴을 고려하는 것이 좋습니다.
반응형
'React' 카테고리의 다른 글
17. 상태 관리 라이브러리 - 3 (0) | 2024.02.19 |
---|---|
16. 상태 관리 라이브러리 - 2 (0) | 2024.02.18 |
15. 상태 관리 라이브러리 - 1 (0) | 2024.02.18 |
14. 컴포넌트 패턴과 최적화 - 3 (2) | 2024.02.18 |
12. 컴포넌트 패턴과 최적화 - 1 (0) | 2024.02.18 |
11. Hooks를 활용한 상태 관리 - 3 (0) | 2024.02.18 |
10. Hooks를 활용한 상태 관리 - 2 (0) | 2024.02.18 |
9. Hooks를 활용한 상태 관리 - 1 (2) | 2024.02.18 |