Introduction to Functional Thinking (Programming) for React Developers함수형 사고는 왜 필요한가?: 리액트 개발자를 위한 함수형 사고(프로그래밍) 입문
2026/03/30 구효민.
나는 함수형 컴포넌트를 써 봤어요!
map, filter, reduce?
Monad? (함수형 프로그래밍을 들어본 적이 있다면)
프로그램은 무엇일까요?
프로그램을 하나의 합성 함수로 정의한다면, 우리가 생각하는 문제 정의/해결책과 프로그램 코드의 멘탈 모델이 일치될 수 있음
프로그램 (복잡한 문제를 처리하는 함수) ㄴ 내부 모듈 (복잡한 문제를 쪼갠 하위 문제를 처리하는 함수) ㄴ 내부 함수 (하위 문제를 또 쪼갠...) ㄴ 라이브러리 코드 (내부는 복잡하지만 입력과 출력이 명확하여 이 문제에서 깊게 들여다 볼 필요가 없는 함수)
useMemo
useEffect
useReducer
const NoCompose = (props: SomeLargeProps) => ( <article> <section id="a-sec"> <p>{props.a.wow}</p> {/* ... */} </section> <section id="b-sec"> <p>{props.b.what}</p> {/* ... */} </section> </article> );
const ASection = (props: ASectionProps) => ( <section id="a-sec">{/* ... */}</section> ); const BSection = (props: BSectionProps) => ( <section id="b-sec">{/* ... */}</section> ); const GoodCompose = (props: SomeLargeProps) => ( <article> <ASection {...props.a} /> <BSection {...props.b} /> </article> );
Before: no_compose(a, b) -> viewAfter: compose(a_sec(a), b_sec(b)) -> view
no_compose(a, b) -> view
compose(a_sec(a), b_sec(b)) -> view
compose
함수의 순수성을 유지하면, 작은 단위로 쪼개고 조합하는 것이 쉬워짐
좋은 React 코드는 결국
즉 React Best Practice는 프레임워크의 취향이 아니라, 함수형 사고를 따를 때 자연스럽게 나오는 결과물
요구사항은 보통 긴 문장으로 시작하지만, 결국 코드로 옮길 때는 아래 두 가지로 수렴함
Test Cases
Constraints
장바구니 UI를 만든다면...
Test Case
Constraint
함수형 사고는 이런 요구사항을
로 바꾸어 생각하게 만듦
복잡한 요구사항은 보통 한 번에 해결되지 않음
이때 거대한 함수 하나보다, 작은 변환 파이프라인이 더 강함
raw_data -> validate -> normalize -> derive_view_model -> render
파이프라인으로 나누면
React에서도 비슷함
오늘 이야기한 핵심은 FP 문법 자체가 아님
더 중요한 것은 이런 사고 방식
React는 이 사고를 연습하기에 꽤 좋은 환경임
결국 중요한 것은 FP가 아니라 Functional Thinking이다
EOD