如何解决ngrx adpter update1
我对ngrx适配器有疑问, 如何根据动作的参数更新减速器?
我试图从rxjs中创建一个find方法,但是出现“重叠”错误。
主界面和状态界面都共享一个关键参数,但不是id。
这是一段代码:
动作:
export const verifyDocument = createAction('[Document/API] Verify Document',props<{ status: Status }>());
减速器:
const _documentReducer = createReducer(
initialState,on(DocumentActions.upsertDocuments,(state,{ documents }) => {
return adapter.upsertMany(documents,state);
}),on(DocumentActions.verifyDocument,{ status }) => {
const records = {...state.entities}
console.log("reducer: ",records,status,"end.");
return state;
//return adapter.updateOne(???,state);
解决方法
您可能想尝试通过以下方法实现它:
首先创建一个selector
,以便您可以通过所需的属性获取对象:
export const getPersonByName = createSelector(getPeopleEntities,(people: Person[],name: string) => people.find(x = x.name == name));
利用Effect
来监听UpdateByNameAction
并依次派发UpdatePesonByIdAction
将允许您预期的行为:
public findByName$ = createEffect(() => this.actions$
.pipe(
ofType(SchemaActionTypes.FindByName),switchMap(name => this.store.pipe(select(getPersonByName,name))),map((person) => authAction.updatePesonByIdAction(person,person.id))
)
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。