Composable
리액트에서 말하는 composable은 복잡한 UI를 작고 독립적이며 재사용 가능한 컴포넌트들을 사용해서 구현하는 것을 의미합니다.
컴포넌트를 마치 라이브러리처럼 만들고 여러 곳에서 사용하는 것입니다.
Declarative
declarative(선언형)은 무엇을 할 것인지에 중점을 두는 것이고, 반대로 imperative(명령형)은 어떻게 할 것인지에 중점을 두는 것입니다.
예를 들어 목표가 주어진 숫자 배열에서 짝수만 추출하는 것이라고 합니다. imperative의 경우 배열을 순회하면서 요소가 짝수인지 확인하고 짝수라면 evens 배열에 넣는다라는 어떻게 할 것인지 볼 수 있습니다. 반면에 declarative는 내부 동작은 보이지 않지만 filter 함수를 통해서 짝수만 추출한다라는 무엇을 원하는지만 선언합니다.
// 목표: 배열에서 짝수 추출하기
const nums = [1,2,3,4,5];
// Imperative
const evens = [];
for(let i=0; i<nums.length; i++) {
if(nums[i] % 2 == 0) evens.push(nums[i]);
}
console.log(evens);
// Declarative
const evens = nums.filter(el => el % 2 == 0);
console.log(evens);
비유하면 imperative는 요리의 모든 과정을 진행하는 것이고, declarative는 요리사에게 요리해 달라고 요청만 하는 것이라고 보면 됩니다. declarative가 더 추상적입니다.
react에서 render 함수를 통해 요청하면 원하는 UI는 react가 그려주는 것을 보면 declarative인 것을 알 수 있습니다.
scrimba는 일부 유료 기능을 제공하지만 해당 강의에서는 유료로 결제할 부분은 문제를 푸는 부분에서 발생할 수 있는데 스킵해도 문제없습니다. 일시정지하고 문제를 풀어도 됩니다.
참고
'개발 > React.js' 카테고리의 다른 글
| [React.js] React state (1) | 2025.08.04 |
|---|---|
| [React.js] data-driven react last (1) | 2025.07.18 |
| [React.js] static page last (0) | 2025.07.03 |
| [React.js] About lecture & static page (0) | 2025.07.01 |
| [React.js 학습] 무슨 영상을 참고해서 공부하면 좋을까? (2) | 2025.06.23 |