のショッピングカートアプリを構築しています。角度+ Redux。 私はインターフェイスの各オブジェクトの配列(製品私のカートでを)持っている:製品ボタンカートに状態を維持する角度/ Redux正しい方法
<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>
を追加しているページに
export interface IProduct {
id: number;
description: string;
isAdded: boolean;
}
私が欲しいものは変更するカートに入れるテキストで商品を追加すると、商品が追加されます。私は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を追加して追加オブジェクトの別の配列に使用する必要がありますか?したがって、の2つの異なるアレイを有するカート製品およびマーク付き商品が追加されました。追加されたオブジェクトとその状態を保存しますか?
私はカートのための別の状態を作成し、その中に製品IDを追加します。カートの行をループし、製品IDがそこにあるかどうかをチェックすることによって、ボタンはその状態になります。 –
はい、ありがとうございます。私はちょうど事実と混同している製品のアクションの追加/削除は常にカートに追加/製品が追加された状態を伴う。だから私は2つの別々の配列を作ることに疑問を抱いていましたが、今はReduxのロジックを壊さないかもしれないと思います。 –