Адаптер NGRX Store.updateone не меняет свойства для обнаружения изменений

У меня есть следующий редуктор:

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;   
                   }
      }
}

К сожалению, когда я иду обновлять объект, я ясно вижу, что в action.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.info(res));

Это старые данные, даже если срабатывает изменение. Я бы по крайней мере ожидал увидеть updatedBy = "test". Я также вижу старые данные в состоянии незамедлительно после updateOne, если я прохожу через отладчик.

Другой способ сказать, что это

      return adapter.updateOne(action.payload, state);

Кажется, на самом деле ничего не меняется, несмотря на правильные значения в полезной нагрузке.

Почему свойства состояния на самом деле не обновляются? Есть ли правильный способ сделать это?

если в вашем браузере включено кеширование, вы можете увидеть старые данные

Derviş Kayımbaşıoğlu 06.02.2019 18:04

Под старыми данными я подразумеваю сразу старые данные, например, прямо перед обновлением.

Seth 06.02.2019 18:28
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
2
3 808
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема была в редукторе.

return adapter.updateOne({ id: action.payload.id, changes: action.payload }, state);

Другие вопросы по теме