[React] Container/Presenter Pattern

DongEun·2022년 11월 13일
2
post-thumbnail

Props와 State

React에서 Props와 State는 데이터와 상태관리를 뜻해요.

React에서 데이터 흐름은 단방향으로 props는 부모가 자식에게만 줄 수 있으며, 자식이 부모에게 줄 수 없다는 것을 의미해요.

Props를 이용하여 부모에서 자식에게 데이터를 전달하는 방식은

부모 컨테이너

import {useState} from 'react'
import ContainerUI from './react-presenter'

export default function Container() {
    const [data, setData] = useState('')

    const onclickBtn = () => {
        setData('클릭했습니당~')
    }
    
    return <ContainerUI
    	// 데이터이름 = {전달할 데이터의 값(state)}
		// 데이터 이름은 변수명 저장 하듯이 저장 하면되요
        
        data = {data}
        onclickBtn = {onclickBtn}
    />
}

자식 컨테이너

export default function ContainerUI(props) {

    return (
        <S.Container>
            <div>{props.data}</div>
            <button onClick={props.onclickBtn}>버튼</button>
        </S.Container>
    )
}

props는 객체입니다.
props에 저장되어있는 데이터를 꺼내기 위해서는 props.data처럼 작성 해주셔야해요

하지만 아래와 같이 구조분해 할당처럼 작성하는 방법도 있어요

export default function ContainerUI({data , onclickBtn}) {

    return (
        <S.Container>
            <div>{data}</div>
            <button onClick={onclickBtn}>버튼</button>
        </S.Container>
    )
}



Container/Presenter

한곳에 다 작성하는 코드법은 가독성도 떨어지고 후에 다른 인원이 수정을 하기에 어려움을 겪을수 있어요 그렇기에 좀 더 효율적으로 파일을 관리하는 기법이 나왔는데 그중에 하나가 Container/Presenter 패턴이에요

React에서는 Container/Presenter 패턴과 atomic 패턴을 주로 사용을해요

Container

  • state 관리
  • UI를 작성하지 않음
  • 데이터와 데이터 조작에 관한 함수를 만들고 Props로 전달

Presenter

  • 사용자가 직접 보고, 조작하는 컴포넌트(UI)
  • 기능조작 X , Container에서 내려준 Props로 변경

reference

profile
다채로운 프론트엔드 개발자

0개의 댓글