Компонент Angualr не монтируется, если эффекты возвращают кэшированные результаты - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь кэшировать http-запросы, чтобы уменьшить трафик c, в разделе Эффект задачи я проверяю, были ли уже получены пользовательские задачи. Но когда я делаю это, когда я возвращаю кешированные задачи, компонент не рендерится. Если вы удалите его и снова выполните http-запрос, он продолжит работать.

это класс TasksEffect

@Injectable()
export class TasksEffect {
  @Effect() fetchEffects = this.actions$.pipe(
    ofType(TaskListActions.FETCH_TASKS),
    withLatestFrom(this.store.select('tasksModule')),
    switchMap(([action, tasksModule]) => {
      if (tasksModule.tasks.length) {
        return of(new TaskListActions.SetTasks([...tasksModule.tasks]));
      }
      return this.taskService.fetchTasks((action as TaskListActions.FetchTasks).interval)
        .pipe(
          catchError(err => of(err)),
          switchMap(tasks => of(new TaskListActions.SetTasks(tasks))),
        );
    })
  );

  constructor(private taskService: TaskService, private store: Store<fromTasks.AppState>, private actions$: Actions) {
  }
}

Что-то не так с моим кодом? если это так, как я могу это исправить? Также есть ли лучший подход для кэширования http-запроса, как memoize в реаги

...