代码之家  ›  专栏  ›  技术社区  ›  MCMatan

按键、嵌套状态保存到redux存储

  •  0
  • MCMatan  · 技术社区  · 7 年前

    聊天应用程序:

    我想为每个会话id保存不同的chatmessages数组。

    我想象过这个州会是这样的:

    state {
      messages: {
       isRequesting: false,
       messageByConversationId: {
        "23523534543": [messages],
        "64634523453": [messages],
       }
     }
    }
    

    但我似乎无法保存嵌套状态,有可能吗?

    我的代码:(因为这一行而不运行:chatmessage[conversationid]:payload.chatmessages)

    export const loadChatMessagesSuccess: Reducer<ImmutableChatMessagesState> =
      (state: ImmutableChatMessagesState, {payload}: AnyAction & { payload?: LoadChatMessagesSuccessParams }) =>
        payload ? {...state, requesting: false, chatMessage[conversationId]: payload.chatMessages}
          : state;
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Yury Tarabanko    7 年前

    我不太明白你的问题。但您可以执行以下操作将加载的消息添加到 messageByConversationId 对象,同时保留其他加载的消息。

    铌。假设你有 conversationId 作为变量。例如,你可以让它成为 payload

    export const loadChatMessagesSuccess: Reducer<ImmutableChatMessagesState> = (
      state: ImmutableChatMessagesState,
      { payload }: AnyAction & { payload?: LoadChatMessagesSuccessParams }
    ) =>
      payload
        ? {
            ...state,
            requesting: false,
            messageByConversationId: {
              ...state.messageByConversationId,
              [payload.conversationId]: payload.chatMessages
            }
          }
        : state;