NGRX 8 Effect无限期开火

时间:2019-07-14 18:02:51

标签: angular ngrx ngrx-store ngrx-effects

我是NGRX的新手。我试图创建一个简单的测试动作,其效果只是将123打印到控制台,但是当我打开浏览器时,我看到此效果会无限期触发(一次又一次打印123)。

这是我的代码(是的,我将所有逻辑都放在一个文件中,仅用于测试目的):

import {Component, Injectable, OnInit} from '@angular/core';
import {createAction, createReducer, on, Store} from '@ngrx/store';
import {Actions, createEffect, ofType} from '@ngrx/effects';
import {tap} from 'rxjs/operators';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {

  constructor(private store: Store<AppState>) {
  }

  ngOnInit() {
    this.store.dispatch(test());
  }

}

interface AppState {

}

const test = createAction('[Test] Test');

export const reducer = createReducer(
  {},
  on(test, state => state)
);

@Injectable()
export class Effects {

  test$ = createEffect(() => this.actions$.pipe(
    ofType(test),
    tap(() => console.log(123))
  ));

  constructor(private actions$: Actions) {
  }

}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您需要添加以下内容:{ dispatch: false }到目前为止,您只是在记录日志。

检查文档here