使用 NGRX 在 API 调用中更新后将项目添加到状态

Add item to state after updating in API call using NGRX

我正在使用 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)
  })

更新 post 时,API 接受的模型不同于获取时的模型:

export interface PostUpdateModel {
  id: number;
  content: string;
  title: string;
  tagsIds: number[];
}  

我的想法是让一个 Effect 接受一个 PostUpdateModel 并将其发送到 API which returns a Post 然后调用 updateOne。

这有意义吗?我该怎么做?

是的,这是有道理的。 另一种看待它的方法是将整个 Post 对象发送到效果并让效果将其映射到请求对象。

此外,目前为每个 post 存储了一组标签。在更复杂的情况下,这可能更难维护,因为此数据是重复的,normaling state 可以提供解决此问题的解决方案(如果您有的话)。