Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按键保存到redux存储,嵌套状态_Javascript_React Native_Redux - Fatal编程技术网

Javascript 按键保存到redux存储,嵌套状态

Javascript 按键保存到redux存储,嵌套状态,javascript,react-native,redux,Javascript,React Native,Redux,聊天应用程序: 我想为每个会话id保存不同的ChatMessages数组 我想象过这个州会是这样的: state { messages: { isRequesting: false, messageByConversationId: { "23523534543": [messages], "64634523453": [messages], } } } 但我似乎无法保存嵌套状态,有可能吗 我的代码:(由于以下行而无法运行:chatMessage[con

聊天应用程序:

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

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

state {
  messages: {
   isRequesting: false,
   messageByConversationId: {
    "23523534543": [messages],
    "64634523453": [messages],
   }
 }
}
但我似乎无法保存嵌套状态,有可能吗

我的代码:(由于以下行而无法运行:chatMessage[conversationId]:payload.chatMessages)

export const loadchatmessage成功:Reducer=
(状态:ImmutableChatMessagesState,{payload}:AnyAction&{payload?:LoadChatMessagesAccessParams})=>
有效载荷?{…状态,请求:false,chatMessage[conversationId]:payload.chatMessages}
:国家;

我不确定我是否完全理解你的问题。但是,您可以执行以下操作将加载的消息添加到
messageByConversationId
对象,同时保留其他加载的消息

注意。这假设您以某种方式获得了
conversationId
作为变量。例如,您可以使其成为
有效负载的一部分

export const loadChatMessagesSuccess: Reducer<ImmutableChatMessagesState> = (
  state: ImmutableChatMessagesState,
  { payload }: AnyAction & { payload?: LoadChatMessagesSuccessParams }
) =>
  payload
    ? {
        ...state,
        requesting: false,
        messageByConversationId: {
          ...state.messageByConversationId,
          [payload.conversationId]: payload.chatMessages
        }
      }
    : state;
export const loadchatmessage成功:Reducer=(
状态:ImmutableChatMessagesState,
{payload}:AnyAction&{payload?:LoadChatMessagesAccessParams}
) =>
有效载荷
? {
……国家,
请求:false,
messageByConversationId:{
…state.messageByConversationId,
[payload.conversationId]:payload.chatMessages
}
}
:国家;

问题不清楚:(@ShankarShastri)现在好点了吗?
export const loadChatMessagesSuccess: Reducer<ImmutableChatMessagesState> = (
  state: ImmutableChatMessagesState,
  { payload }: AnyAction & { payload?: LoadChatMessagesSuccessParams }
) =>
  payload
    ? {
        ...state,
        requesting: false,
        messageByConversationId: {
          ...state.messageByConversationId,
          [payload.conversationId]: payload.chatMessages
        }
      }
    : state;