Ich baue eine Einkaufswagen App mit Angular + Redux. Ich habe ein Array von Objekten (Produkte in meinem Warenkorb), die jeweils Schnittstelle: habenEckig/Redux korrekte Art, den Staat zu halten
export interface IProduct {
id: number;
description: string;
isAdded: boolean;
}
Die Produkte auf der Seite eine Schaltfläche In der Warenkorb
<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>
Was ich will, ist zu ändern In den Einkaufswagen hinzufügen Text mit In Warenkorb, wenn ein Produkt hinzugefügt wird. Ich habe es erfolgreich mit dem Rxjs, aber wenn ich die Produkten Seite verlassen, und dann, um es zurück, meine In Warenkorb Spanne für die hinzugefügten Produkte verloren (In dem Warenkorb wieder gezeigt). Also, ich denke, Redux ist der einzige Weg, um mir zu helfen, den Staat zu halten.
Ich schrieb eine Reducer-Funktion mit einigen Aktionen. Hier ist einer von ihnen:
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))
})
}
}
Also, meine Frage Was ist der richtige Weg, um den Zustand eines Objekts zu halten, nachdem es in dem Warenkorb hinzufügen? Sollte ich die gleiche ADD_PRODUCT Aktion für das, oder sollte ich eine andere Aktion schreiben, sagen wir, MARK_ADDED und es für ein anderes Array von hinzugefügten Objekte verwenden? So mit zwei verschiedenen Arrays für Im Warenkorb Produkte und Markiert hinzugefügt Produkte, wo ich die hinzugefügten Objekte und ihren Zustand entsprechend halten?
Ich würde einen separaten Status für den Warenkorb erstellen und dann Produkt-IDs hinzufügen. Dann erhält die Schaltfläche ihren Status, indem sie die Einkaufswagenzeilen durchläuft und prüft, ob sich die Produkt-ID dort befindet. –
Ja, danke für Ihre Meinung. Ich bin nur verwirrt mit der Tatsache, dass Add/Remove Produkt Aktion immer von Add to cart/Produkt hinzugefügt Zustand hinzugefügt wird. Ich habe also Zweifel daran, zwei separate Arrays zu erstellen, jetzt denke ich, dass es die Logik von Redux nicht durchbrechen kann. –