React는 컴포넌트 기반 + 선언형 UI 프레임워크다.
RxJS는 데이터 흐름을 선언적으로 다루는 스트림 라이브러리다.
그렇다면 React에서 RxJS로 상태 관리를 한다는 것은 어떤 의미일까?
🌐 전역 상태를 스트림으로 선언
RxJS에서는 전역 상태를 BehaviorSubject
로 선언하고, 이를 Observable
로 구독하게 만든다.
const count$ = new BehaviorSubject(0);
export const counter$ = count$.asObservable();
export const increment = () => count$.next(count$.value + 1);
📂 React Hook으로 구독
function useCounter() {
const [count, setCount] = useState(0);
useEffect(() => {
const sub = counter$.subscribe(setCount);
return () => sub.unsubscribe();
}, []);
return count;
}
✅ 장점
- 전역 상태를 여러 컴포넌트에서 구독 가능
- 비동기 흐름이나 사용자 이벤트도 자연스럽게 연결 가능
- combineLatest, switchMap, debounceTime 등으로 상태 흐름을 유연하게 구성
❓ 단점 혹은 고민
- 간단한 상태에도 RxJS를 도입하면 과도할 수 있음
- Subject의 수가 많아지면 관리 복잡도 증가
- 직접 next()를 호출하는 부분은 절차형처럼 느껴짐
즉, React에서 RxJS로 상태 관리를 한다는 것은,
전통적인 useState/useReducer 중심의 컴포넌트 상태 관리에서 벗어나
데이터 스트림 기반의 전역 상태와 흐름을 선언적으로 연결하는 것을 의미한다.
'Web Development > Next.js' 카테고리의 다른 글
[RxJS] 3편. RxJS로 CRUD 구현하기 – 그리고 절차형처럼 느껴지는 부분 (0) | 2025.03.23 |
---|---|
[RxJS] 1편. RxJS와 선언형 프로그래밍의 관계 (0) | 2025.03.23 |
React에서 useEffect를 꼭 써야 할까? — 오히려 안 써도 되는 경우가 더 많다 (0) | 2025.03.23 |
React를 쓰면서도 몰랐던 선언형 프로그래밍 이야기 (0) | 2025.03.23 |
[Next.js] Next.js 라우팅 방식의 장점과 다른 방식들과의 차이점 (0) | 2024.12.22 |