У меня есть следующий редуктор:
case ProductionCommentActionTypes.EditCommentSuccess: {
return adapter.updateOne(action.payload, state);
}
, где полезной нагрузкой является следующий объект:
{
id: number,
changes: {
id: number;
avatar: string;
createdAt: Date;
createdBy: string;
body: string;
discipline: string;
isConcern: boolean;
isResolved: boolean;
plan_Id: number;
resolution: {
id: number;
comment_Id: number;
avatar: string;
createdAt: Date;
createdBy: string;
body: string;
}
}
}
К сожалению, когда я иду обновить объект, я могу ясно видеть действие.payload содержит именно те данные, которые я ожидал.Я проверил как action.payload, так и эффект:
@Effect()
resolveProductionConcernSuccess$: Observable<Action> = this.actions$
.ofType<ResolveConcernSuccess>(ProductionCommentActionTypes.ResolveConcernSuccess).pipe(
// Performing a get rather than an edit as the comment should have already
// been updated in the service when the resolution was added.
switchMap(action => this.commentService.getComment(action.payload.comment_Id)),
map((comment: any) => {
comment.updatedBy = "test";
return new EditCommentSuccess(comment);
}),
catchError(err => of(new EditCommentFail(err)))
);
Однако, что я вижу из этого:
this.comments$ = rootStore.select<Comment[]>(fromRoot.getCommentsForSelectedPlan);
this.comments$.subscribe(res => console.log(res));
Являются ли старые данные, даже если изменение вызвано.Я бы хотя бы ожидал увидеть updatedBy = "test".Я также вижу старые данные о состоянии сразу после updateOne, если я перехожу через отладчик.
Другой способ сказать, что это
return adapter.updateOne(action.payload, state);
Непохоже, что-то действительно меняется, несмотря на наличие правильных значений в полезной нагрузке.
Почему свойства в состоянии фактически не обновляются?Есть ли правильный способ сделать это?