在NgRx中,可以通过以下步骤来推送或更新状态:
@ngrx/store
和@ngrx/effects
这两个NgRx的核心库。app.module.ts
中导入StoreModule.forRoot()
函数,并在imports数组中使用该函数注册根状态(Root State)和相关的reducers。Reducers定义了状态的结构和如何处理状态的变化。import { StoreModule } from '@ngrx/store';
@NgModule({
imports: [
StoreModule.forRoot({
// 在这里注册你的reducer
})
]
})
export class AppModule { }
import { createAction, props } from '@ngrx/store';
export const increment = createAction('[Counter Component] Increment');
export const decrement = createAction('[Counter Component] Decrement');
export const reset = createAction('[Counter Component] Reset');
import { createReducer, on } from '@ngrx/store';
import { increment, decrement, reset } from './counter.actions';
export const initialState = 0;
export const counterReducer = createReducer(
initialState,
on(increment, state => state + 1),
on(decrement, state => state - 1),
on(reset, () => initialState)
);
Store
服务来派发action,触发状态的更新。通过使用select
操作符,可以订阅状态的变化并在组件中进行响应。import { Component } from '@angular/core';
import { Store } from '@ngrx/store';
import { increment, decrement, reset } from './counter.actions';
import { Observable } from 'rxjs';
@Component({
selector: 'app-counter',
template: `
<div>
<button (click)="increment()">增加</button>
<div>当前计数: {{ count$ | async }}</div>
<button (click)="decrement()">减少</button>
<button (click)="reset()">重置</button>
</div>
`
})
export class CounterComponent {
count$: Observable<number>;
constructor(private store: Store<{ count: number }>) {
this.count$ = store.select('count');
}
increment() {
this.store.dispatch(increment());
}
decrement() {
this.store.dispatch(decrement());
}
reset() {
this.store.dispatch(reset());
}
}
这样,当用户点击按钮时,相关的action会被派发到store中,reducers会根据action类型更新状态。最终,通过在组件中订阅状态,可以实时反映状态的变化。
对于NgRx的更详细了解,请参考NgRx官方文档。
请注意,此处不提及任何特定的云计算品牌商,但你可以根据自己的需求选择适合的云计算平台来部署和托管你的应用程序。
领取专属 10元无门槛券
手把手带您无忧上云