我有一个离子4应用程序,正在使用NgRX8。
以下代码编译:
connect2$ = createEffect(() =>
this.actions$.pipe(
// restart counter on every click
switchMap(() => interval(1000))
)
);
但是当我如下使用createEffect()时:
bin
我收到以下错误:
类型'Observable'不可分配给类型 '可观察的| ((... args:any [])=>可观察)'
我在上一篇文章中看到了删除createEffect()来解决语法问题的建议。但是当我这样做时,较旧的语法不会出现任何问题。
NgRX 8 effects - Type 'Observable<unknown>' is not assignable to type 'Observable<Action>'
关于我可能会看到的任何建议吗?
谢谢
答案 0 :(得分:2)
较旧的语法没有类型检查-新语法没有类型检查,因此会出现此错误。 现在,您在编译时遇到错误,而不是在运行时遇到意外错误。
您会收到此错误,因为效果应始终返回Action
,除非用{ dispatch: false }
指定
答案 1 :(得分:0)
TL; DR :您是否正在寻找ActionsSubject
?
您的效果似乎没有任何作用(即使它具有{ dispatch: false }
)。
我认为根据下图进行思考很有帮助。
在我看来,效果应该是
这迫使您以以下方式思考:
这导致为每个对象创建适当的操作。
如果您要进行状态更改,而不是使用适当的操作(例如RESTART_TIMER,它在reducer中使用上次重置的时间来更新状态),并使用选择器来创建计数器,但是最好在组件中使用与this question相似的ActionsSubject
订阅