Добавить новый объект в массив объектов в редукторе - PullRequest
0 голосов
/ 31 мая 2019

У меня есть объект рабочей области, который определяется следующим образом:

export interface OneWorkspace {
  id: number;
  name: string;
  roles: WorkspaceRole[]
  users: WorkspaceUser[]
  logs: WorkspaceLog[]
  channels?: OneWorkspaceChannels
}

В объекте channels есть 2 объекта: groups и channels

export interface OneWorkspaceChannels {
  channels: OneWorkspaceChannel[] 
  groups: OneWorkspaceGroup[]
}

export interface OneWorkspaceChannel {
  id: number;
  name: string;
}

export interface OneWorkspaceGroup {
  id: number;
  name: string;
  channel: OneWorkspaceChannel[]
}

Когда пользователь создает новый канал или группу, я хочу добавить новый канал / группу в существующий объект рабочей области к соответствующему объекту в объекте каналов.В моем редукторе я получаю следующие значения для нового канала или новой группы:

newChannels: OneWorkspaceChannel[] | undefined,
newGroups: OneWorkspaceGroup[] | undefined

Я попытался сделать следующее в моем редукторе, но это не работает:

case getType(actions.CreateChannelGroup.success):
  return {
    ...state,
    createChannelGroupStatus: action.payload.CreateChannelGroupStatus,
    createChannelMessage: action.payload.createChannelMessage,
    workspace: {
      ...state.workspace,
      channels: {
        ...state.workspace!.channels!,
        channels: [...state.workspace!.channels!.channels!, action.payload.newChannels! ]
      }
    }
  }

Как правильно добавить новый канал или группу в мой объект рабочего пространства?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...