angular - 使用 NGRX 在 API 调用中更新后将项目添加到状态
问题描述
我将 NGRX/Entity 与 Angular 9 一起使用,并且我拥有以下实体:
export interface Post {
id: number;
content: string;
title: string;
tags: Tag[];
}
export interface Tag {
id: number;
name: string;
}
减速器是这样的:
export interface State extends EntityState<Post> { }
export const adapter: EntityAdapter<Post> = createEntityAdapter<Post>();
export const initialState: State = adapter.getInitialState();
const postReducer = createReducer(
initialState,
on(PostActions.updatePost, (state, { post }) => {
return adapter.updateOne(post, state)
})
更新帖子时,API 接受与获取时不同的模型:
export interface PostUpdateModel {
id: number;
content: string;
title: string;
tagsIds: number[];
}
我的想法是有一个接受 PostUpdateModel 并将其发送到返回 Post 然后调用 updateOne 的 API 的效果。
这有意义吗?我怎样才能做到这一点?
解决方案
是的,这是有道理的。另一种看待它的方法是将整个Post
对象发送到效果并让效果将其映射到请求对象。
此外,目前为每个帖子存储了一组标签。这在更复杂的场景中可能更难维护,因为这些数据是重复的,正常状态可以提供解决这个问题的解决方案(如果你有的话)。
推荐阅读
- gpu - LAPACKE 或 MAGMA GPU - 使用 Cholesky 分解的矩阵求逆 - 函数 magma_dpotrf_gpu 和 magma_dpotri_gpu
- nginx - 我可以使用 nginx 从我的 kubernetes 服务向主机发送请求吗
- sql - 如何在 RazorSQL 中编写参数化查询/脚本
- loops - 将迭代器与多个 URL 的抓取器结合使用,以避免冗长的重复脚本
- c - 带有 fgets 的 While cicle 中的分段错误:CSV 文件
- git - 使用 SSH 连接到 GitHub 到不在我帐户中的项目
- visual-studio - VS Code 中的 XML 文档注释?
- r - 使用 R CMD SHLIB 编译 F77 以在 R 包中使用。更改 `-fmax-stack-var-size=`
- java - 如何将使用来自多个信息类的属性的对象添加到主程序中的数组列表中?
- zoom-sdk - Zoomgov API 调用 vs Zoom?