NGRX 实体:如何将 action.payload 分配给 UpsertOne 中的状态属性

普拉巴特·冈德帕利

我在实体状态有一个减速器。如何分配action.payload.MessagesaveMessage.msg在执行upsertOneUPSERT_Message_SUCCESS采取行动。

 export interface MessageState extends EntityState<Message> {
  // additional entities state properties
    selectedMessageId: number | null;
    loaded: boolean;
    loading: boolean;
  saveMessage?: {
    loaded: boolean;
    loading: boolean;
    msg?: Message;
  };
}

export const adapter: EntityAdapter<Message> = createEntityAdapter<Message>({
  selectId: (msg: Message) => msg.messageId,

});

export const initialState: MessageState = adapter.getInitialState({
  // additional entity state properties
    selectedMessageId: null,
    loaded: false,
    loading: false,
  saveMessage: {
    loaded: false,
    loading: false
  },

});

export function reducer(state = initialState, action: MessageActionsUnion): MessageState {
  switch (action.type) {

    case MessageActionTypes.UPSERT_MessageS_SUCCESS: {
      return adapter.upsertMany(action.payload.Messages, { ...state, loaded: true, loading: false });
    }



    case MessageActionTypes.UPSERT_Message: {
      return { ...state,loading: true, loaded:false };
    }


   //assign action.payload.message to saveMessage.msg

    case MessageActionTypes.UPSERT_Message_SUCCESS: {
   return  adapter.upsertOne(action.payload.saveMessageHeader, {...state,loaded:true,loading:false});

  // return {
  //   ...state,
  //   saveMessage: {
  //     loading: false,
  //     loaded: true,
  //     msgHeader: action.payload.saveMessageHeader
  //   }
 // };
}
    case MessageActionTypes.UPSERT_Message_FAIL: {
      return { ...state };
    }



    default: {
      return state;
    }
  }
}

对应的动作调用签名如下:

export class SaveMessageSuccess implements Action {
  readonly type = MessageActionTypes.SAVE_MESSAGE_SUCCESS;
  constructor(public payload:  {saveMessage:partial <Message> }) {
  }
}
时间作家

upsertOne不允许 aPartial<Entity>但需要一个 entity T

在您的情况下,将动作创建者更改为以下内容应该可以解决问题:

export class SaveMessageSuccess implements Action {
  readonly type = MessageActionTypes.SAVE_MESSAGE_SUCCESS;
  constructor(public payload:  {saveMessage: Message}) {
  }
}

@ngrx/实体文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将枚举分配给viewmodel属性?

来自分类Dev

如何将CSS属性分配给标签

来自分类Dev

如何将枚举分配给viewmodel属性?

来自分类Dev

如何将类方法分配给类属性?

来自分类Dev

如何将引用值分配给通用属性

来自分类Dev

类型“ TypedAction”上不存在属性“有效载荷”。我如何从ngrx效果访问action.payload?

来自分类Dev

如何将单词分配给列表中的值?

来自分类Dev

如何将列表中的项目分配给变量

来自分类Dev

将reducer分配给嵌套状态属性?

来自分类Dev

将属性分配给功能

来自分类Dev

将值分配给Swift属性

来自分类Dev

将NSNotFound分配给属性?

来自分类Dev

将属性分配给功能

来自分类Dev

将范围分配给类属性

来自分类Dev

Rails将属性分配给实例

来自分类Dev

如何将内存分配分配给数据库中的每个属性

来自分类Dev

如何投射 CreateDelegate 并分配给 Action<T>

来自分类Dev

如何将 Json 响应对象分配给 React Native 中的状态对象

来自分类Dev

如何将数组中对象的属性分配给多个类属性?

来自分类Dev

将属性分配给JavaScript中的函数引用

来自分类Dev

将值分配给TypeScript中的类属性

来自分类Dev

路由参数如何将值分配给Blazor中的属性?

来自分类Dev

如何将 Dapper 检索到的列表分配给我的类模型中的属性?

来自分类Dev

在实体框架中将只读属性分配给新对象

来自分类Dev

在SwiftUI中如何/在哪里将CoreData实体的变量分配给结构的@State变量?

来自分类Dev

如何通过组件将函数作为值分配给Vuex状态下的对象的属性?

来自分类Dev

如何将按钮的键分配给状态变量

来自分类Dev

使用ReactJS将状态分配给嵌套数组

来自分类Dev

将本地存储分配给反应状态。反应钩

Related 相关文章

热门标签

归档