天天看點

NgRx Store裡的StoreModule.forRoot()

NgRx Store裡的StoreModule.forRoot()

Actions are the inputs and outputs of many systems in NgRx.

Actions是NgRx系統的輸入和輸出。

NgRx裡标準的Action interface:

NgRx Store裡的StoreModule.forRoot()

狀态遷移并不會修改原始狀态,而是借助三個點 … 即spread操作符,傳回新的state對象。Spread 操作符會從目前state變量裡拷貝屬性,生成新的對象引用。

NgRx Store裡的StoreModule.forRoot()
NgRx Store裡的StoreModule.forRoot()
NgRx Store裡的StoreModule.forRoot()
NgRx Store裡的StoreModule.forRoot()
NgRx Store裡的StoreModule.forRoot()

使用createSelector和createFeatureSelector之後,ngRx架構代碼會記錄當我們的selector被調用時,傳入的輸入參數。這麼做的動機是,selectors是純函數,是以相同的輸入一定會産生相同的輸出,是以ngRx把每次輸入以及輸出都緩存起來,如果下次調用selector的輸入在緩存裡有記錄,即從緩存裡傳回輸出資料,以提高性能。

這種行為稱為memoization.

下圖的代碼,調用createFeatureSelector傳入一個字元串,建立一個feature selector:

NgRx Store裡的StoreModule.forRoot()
NgRx Store裡的StoreModule.forRoot()
NgRx Store裡的StoreModule.forRoot()
NgRx Store裡的StoreModule.forRoot()

繼續閱讀