에는 comments
, attachments
, images
이 첨부되어 있습니다. 모든 항목은 ngrx
상점에서 가져와서 해당 항목이 모두 관찰 가능하다는 것을 의미합니다. 내 질문은 어떻게 그 항목을 결합합니까?observable, ngrx의 최신 버전을 여러 개 결합하십시오
보통 내가하는 일은 사용하는 것입니다 : 관찰의 2 개 세트와
combineLatest(selectProducts, selectProductComments, (products, comments) => {
// attach comments to products here
})
그러나 combineLatest
작품과 나는 그들의 4이있다. 그래서 이것에 대해 가장 간단한 방법은 무엇입니까?
products
의 목록을 표시, 각 제품은로드 팝업에 표시되는 제품에 대한 추가 정보를 클릭 : 여기
더 많은 상황이다. 해당 정보에는 comments
, attachments
및 images
이 포함되어 있습니다. 이 단계는 DEEP_LOADING
단계라고 할 수 있습니다. 사용자가 제품을 클릭하면 주석, 첨부 파일 및 이미지가 http를 통해로드됩니다.
사용자는 새 이미지, 주석 또는 첨부 파일을 추가 할 수도 있습니다. 그가 그렇게하면 pending
상태로 설정된 comment
이 주석 목록에 추가됩니다. http 요청이 해결되면이 comment
보류 등록 정보가 false로 설정됩니다.
사용자가 팝업을 닫고 새 제품을 열면 새로운 comments
, attachments
및 images
이로드됩니다. 이 시간에 그는 팝업을 닫고 처음 열었던 것을 열고, 표시되는 comments
은 백엔드에서로드 된 것 (이전과 동일)뿐만 아니라 보류중인 주석 (있는 경우)도 있습니다.
코멘트 감속기는 다음과 같이 보일 수 있습니다. (나는 상점을 표준화하는 과정에 있기 때문에 의견을 말할 수 있습니다. 의견은 현재 제품의 일부이므로 보류 상태에 신경 쓸 필요가 없습니다. 물건 ..)
export function commentReducer(state, action) {
switch (action.type) {
case 'SET_COMMENT':
// when we set we have to keep the pending comments,
// so when we open another product, then switch back to the original one
// if the pending comment is still pending it should display as pending
const newState = state.filter((c: AppComment) => c.pending);
newState.push(action.payload);
return newState;
case 'CLEAR':
return initialState;
}
}
combineLatest. 원하는만큼 많이 전달할 수 있습니다. – Maxime
또 한 방아쇠를 당기거나 관측 가능 상태를 유지하려고합니까? combineLatest는 위험 할 수 있기 때문에. withLatestFrom을 살펴보고 필요에 맞는 것이 있다면이 것을 사용하는 것이 좋습니다. (당신이 모른다면, 더 많은 컨텍스트를 제공하십시오) – Maxime
@Maxime 좀 더 많은 컨텍스트를 추가했습니다. 원하는 컨텍스트 유형입니까? – Ced