2016-12-02 195 views
0

我很難重寫嵌套數據結構以利用redux狀態容器(我在使用Angular 2中的ngrx)。Redux:拼合嵌套數據結構

  1. 我的數據包括許多產品

(id, title, description, etc.).

  • 每個產品有1個或更多個 「包」
  • (think: Cars have Premium, Exclusive, Sports etc. packages)

    1. 每個包裝可以具有附加元件和/或配置

    (addons as in Car + Premium + alloy wheels)

    (configuration as in sports package with sport suspension)

  • 一些配置選項可以具有子選項
  • 眼下什麼我有一個深嵌套的Product結構,我想平坦化,因爲在不改變狀態的情況下改變任何更深層的選項都是地獄。

    export class Product { 
        public id: string; 
        public title: string; 
        public packages: ProductPackage[] = []; 
    } 
    
    export class ProductPackage { 
        public id: string; 
        public title: string; 
        public sku: string; 
        public config?: ProductPackageOptionGroup[]; 
        public addons?: ProductPackageOptionGroup[]; 
    } 
    
    export class ProductPackageOptionGroup { 
        public title: string; 
        public options: ProductPackageOption[] = []; 
        // Checkbox or radio 
        public selectionmode: 'single' | 'multiple' = 'single'; 
    } 
    
    export class ProductPackageOption { 
        public title: string; 
        public sku?: string; 
        public key?: string; 
        public value?: string; 
        public options?: ProductPackageOption[] = []; 
        public selectionmode: 'single' | 'multiple' = 'single'; 
    } 
    
    • 在界面中,用戶首先選擇一個產品,比一個包,並且然後選擇的附加元件和/或配置的配置選項。

    • 產品之間切換不應該重置底層軟件包配置。

    • 當選擇產品時,只應顯示相應的包裝。

    如何拉平這種結構能夠滿足要求,並有一個更容易的時間與終極版開發?

    +0

    也許你應該考慮嘗試Immutable.JS? – Maxime

    +0

    另外,我在這裏沒有看到任何問題......你能澄清一下嗎? – Maxime

    +0

    添加要求和問題 –

    回答