javascript - 如何为 ngrx/data 中的操作编写效果?
问题描述
我在一个带有ngrx的项目中工作,还使用来自ngrx的其他库和包,如ngrx/entity或ngrx/data。
有时我需要在属于(就被调度而言)ngrx/data的某些操作中创建效果。
我发现一些困难的地方是调度其他动作,这些动作与ngrx / data以自动方式甚至我自己(自定义)调度的其他一些动作有很强的依赖性,如下所示
...
@Injectable()
export class FooEffects {
fooSelected$ = createEffect(() =>
this.actions$
.pipe(
ofType(FooActions.fooSelected),
map((action) => this.entityActionFactory.create<Foo>('Foo', EntityOp.QUERY_LOAD),
))
);
...
constructor(private actions$: Actions, private entityActionFactory: EntityActionFactory) { }
}
...
那么,如何监听ngrx/data中的QUERY_LOAD、通用get/all或其他任何动作来实现新效果的创建呢?它是否存在类似的东西
fooNgrxDataEffectForQueryLoad$ = createEffect(() =>
this.actions$
.pipe(
ofType(('Foo', EntityOp.QUERY_LOAD)),
或者以另一种方式问,我如何在 ngrx/data 中为“ NATIVE ”操作编写效果?
我知道创建 ngrx/data 是为了尽可能多地摆脱 Actions、Selectors、Effects、Reducers,因此样板文件更少。但是,应该有一种方法可以从ngrx/data 创建效果。
提前谢谢了。
解决方案
你在你的例子中是一种可能的方式。
你应该监听 ngrx/data 类型的动作并引起你需要的东西。ngrx/data 非常原始并且有很多限制。
他们推荐的是扩展基类并改变行为,添加新的动作/效果/减速器等。
如果您能提供一个如何更改流程的示例,那就太好了。
推荐阅读
- java - Java - 从 Jar 导入读取目录
- kubernetes - 如何解决为什么我的服务中的端点没有更新?
- php - 如何在 Laravel 5.6 中检查 @if 语句中的当前 URL
- ios - AudioKit.output setter 与 SIGABRT 崩溃
- linux - 将 time 命令的输出重定向到文件
- javascript - 根据特定元素设置状态
- windows - Windows 上的 Postgres - 如何将 PSQL 命令行拆分为多行?
- spring - 使用 Spring Boot 的数据库事件监听器
- macos - 如何在 OSX 上打开“共享菜单”首选项?
- node.js - 从 JSON 模块加载 Nest.js 应用程序的端口号