3
저는 angular2 앱을 ngrx/store로 구축하고 있습니다. redux 라이프 사이클에서 어디에서 알림 (토스트)을 표시하는 메서드를 호출해야합니까?어디에서 redux 라이프 사이클에서 알림 (토스트)을 표시하는 메서드를 호출해야합니까?
현재 나의 추측은 부작용 (나는 ngrx/효과를 사용)에서해야한다는 것입니다.
@Effect({ dispatch: false }) public newBidPublished$: any = this._actions$
.ofType(BiddingStatusActions.NEW_BID_PUBLISHED)
.map((action) => action.payload)
.map((biddingStatus: GetBiddingStatusApiResponseModel) => {
let msg = '<p>New bid has arrived.</p>';
// PROBLEM HERE: I don't have access to previous bidding status here:
if (biddingStatus.tenderRank !== 1 && previousBiddingStatus.tenderRank === 1) {
msg += '<p>You are no longer in leading position.</p>';
}
this._notificationsService.info(msg);
});
큰 문제가 있습니다. 현재 입찰가가 선두 위치를 잃어 버렸는지 비교할 수 있도록 이전 상태에 액세스해야합니다. 현재와 이전 상태 모두에 액세스 할 수있는 유일한 장소는 감속기입니다. 하지만 알림을 표시하는 것이 좋을 것 같지 않으며 서비스가 아니기 때문에 NotificationService를 삽입 할 수 없습니다.
시도했지만 이전 상태를 유지하는 방법을 여전히 이해할 수 없습니다. 상태 $는 구독 할 때 여전히 최신 상태를 반환합니다. 시도 "take (2)"하지만 사용하지 마십시오. P. 나는 Rxjs에 초보자입니다. – user1131522
이전 상태에 대한 액세스가 필요한 경우 분명히 감속기에 저장해야합니다. 이전 상태를 저장하는 방법에 대한 도움말은 Google에서 'redo/undo redux'를 Google에서 확인할 수 있습니다. 감속기에 이전 상태를 저장 한 후에는 설명 된 방법으로 간단히 액세스 할 수 있습니다. 그건 그렇고 :'take (1)'연산자는'Observable에서 한 요소를 취한 후에 구독을 취소합니다. 그것 없이는 앱에서 메모리 누출 가능성이 있습니다. –