React/know

Render Props 패턴

타코따코 2024. 11. 20. 17:33

Render Props 패턴

  • ui는 외부에서 받으므로 계속 달라질 수 있음.
  • 로직은 내부로직을 callback으로 반환해서 ui는 다르나 같은 로직을 쓰고 있음.
  • 재사용성을 높이기 위한 패턴임.
import React, { useState } from 'react';

// 로직만 포함하는 Counter 컴포넌트
function Counter({ children }) {
  const [count, setCount] = useState(0);

  const increment = () => setCount(count + 1);

  return children(count, increment);  // 상태와 로직만 전달
}

// 재사용할 로직을 사용하는 App 컴포넌트
function App() {
  return (
    <div>
      <Counter>
        {(count, increment) => (
          <div>
            <p>Count A: {count}</p>
            <button onClick={increment}>Increment A</button>
          </div>
        )}
      </Counter>

      <Counter>
        {(count, increment) => (
          <div>
            <p>Count B: {count}</p>
            <button onClick={increment}>Increment B</button>
          </div>
        )}
      </Counter>
    </div>
  );
}

export default App;

 

 

합성 상태에서 합성해줄 부모 컴포넌트가 상태까지 포함하면 이런 패턴이 되는게 아닐까? 하는 생각이 들었다. 

이렇게 만들면 해당 컴포넌트는 인스턴스식으로 상태를 가질 수 있어서 보다 강한 재활용이 강할 것 같다. 

'React > know' 카테고리의 다른 글

조건부 랜더링 시 Hook 사용 조심하기  (1) 2024.11.22
비구조할당으로 argument 처리하기  (0) 2024.11.21
성능 최적화 : React Dev Tool, React.lazy  (2) 2024.11.19
useEffect 알아보기  (0) 2024.11.18
useRef 알아보기  (0) 2024.11.17