상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
40대남자선물로 추천하는 스페셜 저널이나 다이어리는?
갑상선증상과 고혈압의 관계는 무엇인가요?
석류효능: 8가지로 남성 건강을 지키는 비밀
핀테크 기업은 어떻게 고객 기반을 확장하나요?
핀테크 플랫폼의 리스크 관리 방식은?
3만원대선물: 이벤트를 완성할 7가지 추천!
4가지 간편한 다이어트간식으로 님과의 고민을 덜어볼까요?
폐 관련 질병의 통계는?
사물인터넷의 글로벌 협력 및 컨소시엄 사례는?
숙주, 비타민과 미네랄의 보고 7가지 이유
표고버섯, 뼈 건강에 도움되는 5가지 이유
표고버섯, 면역력을 챙기는 7가지 이유
Previous
Next
수정하기 - switchMap을 활용한 조건부 렌더링 예시는 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
switchMap은 RxJS 연산자 중 하나로, 주로 Observable 스트림 내에서 새로운 Observable로 전환할 때 사용됩니다. Angular 같은 프레임워크에서 비동기 데이터 처리나 조건부 렌더링과 함께 많이 활용되는데, 조건에 따라 다른 데이터를 받아와서 UI에 렌더링할 때 유용합니다. 조건부 렌더링에 switchMap을 활용하는 대표적인 예시는 다음과 같습니다. 예를 들어, 사용자가 드롭다운 메뉴에서 선택한 값에 따라 다른 데이터를 API로부터 받아와서 보여줘야 하는 상황이라고 가정해봅시다. 1. 사용자가 선택한 옵션을 스트림으로 관리한다. 2. 선택값이 바뀔 때마다 해당 선택값으로 API 요청을 보낸다. 3. 이전 요청이 아직 완료되지 않았더라도, 새로운 선택이 들어오면 기존 요청은 무시하고 새 요청 결과만 받아서 보여준다. 보통 이런 상황에서 switchMap을 사용하면 쉽게 처리할 수 있습니다. 코드를 통해 좀 더 구체적으로 설명해보겠습니다. ```typescript import { Component } from '@angular/core'; import { FormControl } from '@angular/forms'; import { of } from 'rxjs'; import { switchMap, debounceTime } from 'rxjs/operators'; @Component({ selector: 'app-conditional-render', template: ` <select [formControl]="optionControl"> <option value="A">Option A</option> <option value="B">Option B</option> <option value="C">Option C</option> </select> <div *ngIf="data$ | async as data"> <p>데이터: {{ data }}</p> </div> ` }) export class ConditionalRenderComponent { optionControl = new FormControl('A'); // data$는 optionControl 값 변화에 따라 조건별 데이터를 받아옵니다. data$ = this.optionControl.valueChanges.pipe( debounceTime(300), // 연속 변경 시 API 호출 지연 처리 switchMap(option => { if (option === 'A') { // API 요청 A return of('데이터 A'); } else if (option === 'B') { // API 요청 B return of('데이터 B'); } else { // API 요청 C return of('데이터 C'); } }) ); constructor() { // 초기 데이터 로드를 위해 초기 선택값으로 스트림 시작 this.optionControl.setValue(this.optionControl.value); } } ``` 위 예제의 핵심은 다음과 같습니다. - `optionControl.valueChanges` 는 사용자가 선택지를 바꿀 때마다 새로운 값이 방출되는 Observable입니다. - `switchMap` 은 방출된 선택값(`option`)을 받아, 조건에 따라 다른 Observable(여기서는 API 요청 결과 역할의 `of(...)`)로 전환합니다. - 만약 사용자가 매우 빨리 옵션을 바꾸면, 이전에 발행된 Observable은 자동으로 취소되고, 최신 Observable의 결과만 사용하게 되어 불필요한 API 호출이나 데이터 혼란을 방지합니다. - `*ngIf="data$ | async as data"` 를 사용해서 비동기 데이터 구독과 조건부 렌더링을 하고 있습니다. API 결과가 도착하면 그에 맞는 UI가 자동으로 렌더링 됩니다. 요약하면, switchMap을 활용한 조건부 렌더링은 사용자의 입력이나 상태 변화에 따라 비동기 데이터를 동적으로 받아와 화면에 표시할 때 매우 효율적입니다. 조건문과 Observable 스트림을 같이 처리하면서 중첩된 콜백 없이 깔끔하고 선언적으로 작성할 수 있다는 장점이 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기