sewonkimm / sewonkimm.github.io

dev log of sewonkimm
https://sewonkimm-github-io.vercel.app/blog
1 stars 0 forks source link

VAC 패턴 #63

Open sewonkimm opened 1 year ago

sewonkimm commented 1 year ago

View type

  1. data 처리 (마크업)
  2. user interaction (JS)
  3. 비즈니스 로직 처리 (React)

1번은 퍼블리셔, 2,3번을 FE개발자가 처리하는 구조로 개발을 진행하는 것으로 나뉘기도 한다. 그러나 React에서는 JSX로 UI와 로직을 함께 관리하므로 종종 conflict이 발생하고 관심사가 분리되지 않는 문제가 있었다.

관심사의 분리

VAC Pattern

VAC(View Asset Component)

구체적인 구현

A 기능을 구현한다고 하면

  1. A 컴포넌트에 Props Object를 생성하고 JSX에서 사용할 state나 method 정의
  2. JSX는 Aview 컴포넌트로 분리(VAC)
  3. JSX에서 필요한 이벤트 핸들러 같은 것들을 Props로 받아옴

올바른 VAC 컴포넌트는 핸들러를 바인딩만 할 뿐, 기능이나 상태 제어에 관여해서는 안된다.

Pros and cons

Presentational & Container Pattern

로직을 수행하는 컴포넌트와 UI를 보여주는 컴포넌트를 분리하는 패턴. 이렇게 되면 동일한 마크업이나 레이아웃은 재사용 가능하다. Dan Abramov가 2015년 처음 소개했으나 2019년에 hooks를 사용하면서 더 이상 이 패턴을 추천하지 않음. (https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0)

Presentational component

Container component