在ngrx中,reducer和action是用来管理应用状态的重要概念。下面是如何给ngrx reducer/action一个值来设置状态的步骤:
createAction
函数来创建一个action。例如,假设你要设置一个名为setValue
的action,可以使用以下代码创建它:import { createAction, props } from '@ngrx/store';
export const setValue = createAction(
'[Your Feature] Set Value',
props<{ value: any }>()
);
在上面的代码中,setValue
是action的名称,props<{ value: any }>()
定义了action的参数。
createReducer
函数来创建一个reducer。例如,假设你要创建一个名为valueReducer
的reducer,可以使用以下代码:import { createReducer, on } from '@ngrx/store';
import { setValue } from './your-actions';
export const initialState = {
value: null
};
export const valueReducer = createReducer(
initialState,
on(setValue, (state, { value }) => ({ ...state, value }))
);
在上面的代码中,initialState
定义了初始状态,on(setValue, (state, { value }) => ({ ...state, value }))
定义了当setValue
action被触发时如何更新状态。
StoreModule.forRoot
函数来配置ngrx store。例如:import { StoreModule } from '@ngrx/store';
import { valueReducer } from './your-reducer';
@NgModule({
imports: [
StoreModule.forRoot({ value: valueReducer })
]
})
export class YourModule { }
在上面的代码中,valueReducer
被添加到了ngrx store中,并且可以通过store.select
来访问它。
store.dispatch
来分发一个action。例如,假设你的组件中有一个按钮,当点击按钮时,你想将状态设置为特定的值。你可以在组件的方法中使用以下代码来分发setValue
action:import { Component } from '@angular/core';
import { Store } from '@ngrx/store';
import { setValue } from './your-actions';
@Component({
selector: 'your-component',
template: `
<button (click)="setValue()">Set Value</button>
`
})
export class YourComponent {
constructor(private store: Store) {}
setValue() {
const value = 'your value';
this.store.dispatch(setValue({ value }));
}
}
在上面的代码中,当按钮被点击时,setValue
方法会分发setValue
action,并传递一个值作为参数。
这样,当setValue
action被分发时,ngrx会调用reducer来更新状态,从而实现状态的设置。
请注意,以上代码示例中的your-actions
、your-reducer
、your-component
等名称是示例中的占位符,你需要根据你的实际应用进行相应的命名和组织。
关于ngrx的更多信息和使用方法,你可以参考腾讯云提供的ngrx相关文档和资源:
领取专属 10元无门槛券
手把手带您无忧上云