2017-11-24 4 views
1

アプリケーションの状態を同期させておくときに、Reduxスタイルの設計アプローチを使用することの意味を理解しようとしています。 特に、大量のデータセットを処理する場合のパフォーマンスの結果は何ですか。私はそれを購読する私のトップレベルのコンポーネントではその後Angular4 ChangeDetection OnPushとRedux - パフォーマンス

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; 
      }) 
     } 
} 

そして、子コンポーネントは、単にpropertyAとpropertyBを受け は、我々はその下のような単純な減速は、単に状態を返すとしましょうvia @Input

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

} 

これで、OnPush戦略を冗長化することはできません。新しい状態は常にルートレデューサーによって返されるため、入力プロパティの参照も変更する必要がありますか?または、OnPush戦略の仕組みを完全に理解していないのですか? 上記の場合、これは大きな問題ではありませんが、大きなデータセットについてはどうでしょうか?より多くの "枝"と。各アクションは常に新しい状態を返し、コンポーネントツリー全体の変更検出をトリガーします。

今、私は自分の州の個々の支店を購読できることを理解しています。しかし、根減退薬は常に完全に新しい状態を返すことはありません。

答えて

0

redux.js.org

共通の再来の誤解から:あなたは深く状態のクローンを作成する必要があります。現実:内部が変わらない場合は、参照を同じにしてください!

+1

ありがとうございます!私は実際にredux.js.orgサイトに言及しているこの誤解を抱いていました。また、OnPush ChangeDetection戦略を使用してコンポーネントを最適化する方法について多くの助けになります。 –

関連する問題