"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 확장 가능하고 효율적인 앱을 위해 모든 개발자가 알아야 할 주요 React 디자인 패턴

확장 가능하고 효율적인 앱을 위해 모든 개발자가 알아야 할 주요 React 디자인 패턴

2024-11-06에 게시됨
검색:141

Top React Design Patterns Every Developer Should Know for Scalable and Efficient Apps

React가 계속해서 프런트엔드 생태계를 장악함에 따라 React의 디자인 패턴을 익히면 애플리케이션의 효율성과 확장성이 크게 향상될 수 있습니다. React 디자인 패턴은 구성 요소 구성 및 구조화, 상태 관리, 소품 처리 및 재사용성 향상을 위한 모범 사례를 제공합니다. 이 블로그에서는 개발 프로세스를 좋은 수준에서 훌륭한 수준으로 끌어올릴 수 있는 몇 가지 주요 React 디자인 패턴을 살펴보겠습니다.

1. 프레젠테이션 및 컨테이너 구성 요소

React의 기본 패턴 중 하나는 프레젠테이션 및 컨테이너 구성 요소 패턴으로, 이는 모두 관심사를 분리하는 것입니다.

  • 표현 구성 요소: 이러한 구성 요소는 사물의 모양을 담당합니다. props를 통해 데이터와 콜백을 수신하지만 자체 로직은 없습니다. 유일한 목적은 UI를 렌더링하는 것입니다.

  • 컨테이너 구성 요소: 이러한 구성 요소는 작업 방식을 관리합니다. 여기에는 논리가 포함되어 있고 상태를 관리하며 데이터 가져오기 또는 이벤트 처리를 처리합니다. 컨테이너 구성 요소는 프레젠테이션 구성 요소에 데이터를 전달합니다.


// Presentational Component
const UserProfile = ({ user }) => (
  

{user.name}

{user.email}

); // Container Component const UserProfileContainer = () => { const [user, setUser] = useState({ name: 'John Doe', email: '[email protected]' }); return ; };

이 패턴은 문제 분리를 장려하여 코드를 더 쉽게 유지 관리하고 테스트할 수 있도록 합니다.

2. 고차 부품(HOC)

고차 컴포넌트(HOC)는 컴포넌트 로직을 재사용하기 위한 강력한 디자인 패턴입니다. HOC는 구성요소를 가져와 향상된 동작이나 추가된 기능을 갖춘 새 구성요소를 반환하는 함수입니다.

이 패턴은 일반적으로 인증, 테마 지정 또는 데이터 가져오기와 같은 교차 문제에 사용됩니다.


// Higher-Order Component for authentication
const withAuth = (WrappedComponent) => {
  return (props) => {
    const isAuthenticated = // logic to check auth;

    if (!isAuthenticated) {
      return 
You need to log in!
; } return ; }; }; // Usage const Dashboard = () =>
Welcome to the dashboard
; export default withAuth(Dashboard);

HOC는 여러 구성 요소에서 재사용 가능한 논리를 활성화하여 DRY(Don't Repeat Yourself) 원칙을 장려합니다.

3. 렌더링 소품

Render Props 패턴에는 함수를 구성 요소에 prop으로 전달하여 해당 함수를 기반으로 콘텐츠를 동적으로 렌더링할 수 있습니다. 이는 HOC를 사용하지 않고 구성 요소 간에 상태 저장 논리를 공유하는 데 특히 유용합니다.


// Render Prop Component
class MouseTracker extends React.Component {
  state = { x: 0, y: 0 };

  handleMouseMove = (event) => {
    this.setState({ x: event.clientX, y: event.clientY });
  };

  render() {
    return (
      
{this.props.render(this.state)}
); } } // Usage const App = () => (

Mouse position: {x}, {y}

} /> );

이 패턴은 UI에서 로직을 분리하여 유연성을 제공하고 구성요소를 더 재사용 가능하고 맞춤설정 가능하게 만듭니다.

4. 복합성분

복합 구성 요소 패턴은 일반적으로 반응 선택 또는 반응 테이블과 같은 라이브러리에서 사용됩니다. 이를 통해 상위 구성요소가 하위 구성요소 그룹을 제어할 수 있습니다. 이 패턴은 재사용 가능하고 동적 인터페이스를 구축할 때 유연성을 향상시킵니다.


// Compound Component
const Tabs = ({ children }) => {
  const [activeTab, setActiveTab] = useState(0);

  return (
    
{children.map((child, index) => ( ))}
{children[activeTab]}
); }; // Usage
Content of Tab 1
Content of Tab 2
;

이 패턴은 구성요소를 유연하고 맞춤설정할 수 있도록 유지하면서 상위-하위 통신을 위한 깔끔한 API를 제공합니다.

5. 제어되는 구성 요소와 제어되지 않는 구성 요소

React는 양식 입력을 관리하는 두 가지 방법을 제공합니다: 제어되는 구성요소제어되지 않는 구성요소.

  • 제어되는 구성 요소: 이러한 구성 요소는 props를 통해 React에 의해 상태가 완전히 제어되므로 더 예측하기 쉽습니다.

  • 제어되지 않는 구성 요소: 이러한 구성 요소는 참조를 사용하여 DOM을 직접 조작하므로 제어 수준은 낮지만 잠재적으로 더 높은 성능을 제공합니다.


// Controlled Component
const ControlledInput = () => {
  const [value, setValue] = useState('');

  return  setValue(e.target.value)} />;
};

// Uncontrolled Component
const UncontrolledInput = () => {
  const inputRef = useRef();

  const handleClick = () => {
    console.log(inputRef.current.value);
  };

  return ;
};


세밀한 제어가 필요한지, 가벼운 성능 최적화가 필요한지에 따라 이러한 패턴 중에서 선택합니다.

6. 맞춤 후크

React Hooks를 사용하면 재사용 가능한 방식으로 사용자 정의 로직을 구축할 수 있습니다. 공통 로직을 사용자 정의 후크로 추출함으로써 코드 중복을 방지하고 코드베이스를 더욱 모듈화할 수 있습니다.


// Custom Hook
const useFetch = (url) => {
  const [data, setData] = useState(null);
  const [error, setError] = useState(null);

  useEffect(() => {
    fetch(url)
      .then((response) => response.json())
      .then((data) => setData(data))
      .catch((error) => setError(error));
  }, [url]);

  return { data, error };
};

// Usage
const DataFetchingComponent = () => {
  const { data, error } = useFetch('https://api.example.com/data');

  if (error) return 

Error: {error.message}

; if (!data) return

Loading...

; return
{data.someField}
; };

사용자 정의 후크를 사용하면 선언적 방식으로 관심사를 더 효과적으로 분리하고 공통 기능을 재사용할 수 있습니다.

결론

디자인 패턴은 깔끔하고 유지 관리 가능하며 확장 가능한 React 애플리케이션을 작성하는 데 중요한 부분입니다. 프레젠테이션 및 컨테이너 구성 요소, HOC, 렌더 속성, 복합 구성 요소, 사용자 정의 후크와 같은 패턴을 활용하면 코드가 유연하고 재사용 가능하며 이해하기 쉬운지 확인할 수 있습니다.

이러한 패턴을 이해하고 구현하면 개발 작업 흐름을 대폭 개선하여 React 프로젝트를 더욱 체계적이고 효율적으로 만들 수 있습니다. 이를 다음 프로젝트에 통합하여 코드 품질과 유지 관리 용이성의 차이를 경험해보세요!

릴리스 선언문 이 글은 https://dev.to/ishanbagchi/top-react-design-patterns-every-developer-should-know-for-scalable-and-efficient-apps-245e?1 에 재현되어 있습니다.1 침해가 있는 경우 , [email protected]로 문의해주세요.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3