나는 앵글 + 리디렉션으로 쇼핑 카트 응용 프로그램을 구축 중입니다. 나는 (내 장바구니에 제품) 인터페이스의 각 객체의 배열을 가지고 :앵글/리 듀스 상태를 유지하는 올바른 방법
export interface IProduct {
id: number;
description: string;
isAdded: boolean;
}
페이지의 제품는 버튼 카트
<div class="addBtn" (click)="addToCart(prod)">
<span class="unaddedItem" *ngIf="!prod.isAdded; else added">Add to cart</span>
<ng-template>
<span class="addedItem" #added>In cart</span>
</ng-template>
</div>
에 추가
이 내가 원하는 것은 에 추가합니다 가있는 텍스트는 제품을 추가 할 때에 넣습니다. 나는 Rxjs 성공적으로 그것을했다,하지만 난 제품 페이지를 떠나 다음에 다시 갈 때, 추가 제품에 대한 내 카트에 스팬 (가 다시 표시 쇼핑 카트에 담기 추가) 손실됩니다. 그래서, 제 생각 엔 Redux이 제가 상태를 유지할 수있는 유일한 방법입니다.
일부 동작으로 감속기 기능을 작성했습니다. 여기에 그들 중 하나입니다 :
export function rootReducer(state, action){
switch(action.type){
case ADD_PRODUCT:
action.product.id = state.products.length + 1;
return Object.assign({}, state, {
products: state.products.concat(Object.assign({}, action.product))
})
}
}
그래서, 내 질문에 카트를 추가 한 후 객체의 상태를 유지하는 올바른 방법은 무엇입니까? 동일한 ADD_PRODUCT 조치를 사용해야합니까, 아니면 다른 동작, 예를 들어 MARK_ADDED을 작성하고 추가 된 객체 배열에 사용해야합니까? 따라서, 에 두 개의 다른 배열을 갖는 것은 제품과 으로 표시됩니다. 제품을 추가했는데, 그에 따라 추가 된 객체와 해당 상태가 유지됩니까?
장바구니에 대해 별도의 상태를 만든 다음 해당 장바구니에 제품 ID를 추가합니다. 그런 다음 카트 행을 반복하고 제품 ID가 있는지 확인하여 버튼 상태를 가져옵니다. –
네, 고마워요. 나는 Add/Remove product action은 항상 Add to cart/Product added 상태를 수반한다는 사실과 혼동을 느낀다. 그래서 2 개의 분리 된 배열을 만드는 것에 의구심이 생겼습니다. 이제는 Redux의 논리를 깨뜨릴 수 없을 것이라고 생각합니다. –