簡體   English   中英

Angular4 ChangeDetection OnPush和Redux-性能

[英]Angular4 ChangeDetection OnPush and Redux - Performance

我試圖了解在保持應用程序狀態同步時使用Redux樣式設計方法的含義。 特別是處理大量數據集時的性能結果。 假設我們有一個簡單的reduce,如下所示,它只返回狀態:

const reducer = (state:AppState, action:Action)=>{
  swtich(action.type) {
      case "ADD":
           return state
      default:
           return state
  }
}

然后在我的頂級組件中訂閱它:

@Component({...})
class AppComponent implements ngOnInit {
     propertyA:number;
     propertyB:number;
     constructor(private store:AppStore<AppState>) {}

      ngOnInit() {
          this.store.subscribe((data:AppData)=>{
               this.propertyA = data.propertyA;
               this.propertyB = data.propertyB;
           })
      }
}

然后子組件只需通過@Input接收propertyA和propertyB

@Component({ changeDetection: ChangeDetectionStrategy.OnPush})
class Child {
   @Input() propertA:number;
   @Input() propertyB:number;

}

現在,這不會完全使OnPush策略變得多余嗎? 既然根縮減器總是返回一個新狀態,那么它也應該更改Input屬性的引用嗎? 還是我不完全了解OnPush策略的運作方式? 在上述情況下,這沒什么大不了的,但是更大的數據集呢? 具有更多的“分支”。 每個動作將始終返回新狀態並觸發整個組件樹上的更改檢測。

現在我知道我可以訂閱我所在州的各個“分支機構”。 但是,根減速器是否總是會返回全新的狀態,然后觸發更改檢測?

來自redux.js.org

常見的Redux誤解:您需要深入克隆狀態。 現實:如果里面的東西沒有變化,請保持其引用不變!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM