angular - @ngrx/store reducer 有效负载验证保护

标签 angular ngrx ngrx-store ngrx-store-4.0

我经常在 @ngrx/store 中使用 reducer 来设置状态值,有时来自 http 请求

我见过的所有示例和教程都只是将有效负载设置为状态,或者通过Object.assign或传播将有效负载设置为状态中的键。

问题是,如何验证有效负载是否有效?我遇到过很多情况,有人通过 this.store.dispatch() 提供了错误的有效负载。它可能是错误的格式,或者会丢失 key 等,这会带来无声的错误,因为商店的 reducer 会弄乱状态。对于 http 请求 来说尤其如此。

这导致我的团队项目完全乱七八糟到处都是空检查,因为我们不再信任该商店。

人们如何验证或保护他们的商店免受不良数据的影响?

我从阅读中得到了一些想法:

How can I check that two objects have the same set of property names?

最佳答案

那么人们正在向商店发送无效的操作数据?

依靠 Typescript 来验证操作负载可能还不够。如果您需要更多支持,请尝试使用 tassign ( https://www.npmjs.com/package/tassign ) 与 Object.assign 之类的东西。

如果这还不够,您可以尝试在 http 请求完成后且在分派(dispatch)之前验证效果中的数据。

关于angular - @ngrx/store reducer 有效负载验证保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49757549/

相关文章:

angular - AKS K8S - 使用服务名称从 Angular 前端访问 spring-boot 应用程序

具有多条路线的Angular 2 routerlink?

javascript - 本地存储和ngrx存储

angular - 类型 'map' 上不存在属性 'Subject<{}>'

javascript - 将可观察量转换为数组

Angular Material 和 NGRX : mat-expansion-panels close when Input changes

javascript - @ngrx 从数组中返回一个带有 .single 的对象

angular - 为什么 ngrx/redux 效果必须返回 Action ?使用像 elm 这样的 noop Action 是否被认为是不好的做法?

angular - 使用@ngrx/store 时,这是访问类内状态变量的正确方法吗?

angular - ngrx - 嵌套 reducer