ngrx
的認識ngrx
是借鑑redux
的思惟,專門爲angular
中定製的一個狀態管理的包,相似react
中的redux
、vue
中的vuex
,主要包括如下幾個模塊(本文先介紹@ngrx/store
)
@ngrx/store
@ngrx/store-devtools
@ngrx/effects
@ngrx/router-store
@ngrx/entity
@ngrx/data
@ngrx/schematics
ngrx
的場景
angular
項目開發中屬於非必須的一、使用@angular/cli
初始化項目vue
ng new angular-ngrx
複製代碼
二、建立一個數據的module
(手動修更名字爲AppStoreModule
,否則會和@ngrx/store
中的重名)react
ng g m store
複製代碼
三、在store
文件夾下建立三個文件夾git
actions
reducers
selectors
(非必須的,僅僅是對於一個狀態樹是對象的時候,寫一個方法選擇狀態樹中的一個節點)四、手動安裝@ngrx/store
github
npm install @ngrx/store --save
複製代碼
五、手動安裝@ngrx/store-devtools
vuex
npm install @ngrx/store-devtools --save
複製代碼
六、在reducers
文件夾下建立index.ts
(使用ng add @ngrx/store
會默認生成的)shell
import {
ActionReducerMap,
MetaReducer
} from '@ngrx/store';
import { environment } from '../../../environments/environment';
// 項目中所有的狀態
export interface State {}
// 所有的reducer函數
export const reducers: ActionReducerMap<State> = {};
export const metaReducers: MetaReducer<State>[] = !environment.production ? [] : [];
複製代碼
七、瀏覽器要安裝redux
插件npm
八、在store.module.ts
中配置瀏覽器調試的更多配置見redux
@NgModule({
declarations: [],
imports: [
StoreModule.forRoot(reducers, {
metaReducers,
runtimeChecks: {
strictStateImmutability: true,
strictActionImmutability: true,
strictStateSerializability: true,
strictActionSerializability: true,
}
}),
StoreDevtoolsModule.instrument({
maxAge: 20,
logOnly: environment.production
})
]
})
export class AppStoreModule { }
複製代碼
@ngrx/store
book
組件