Redux mapStateToProps не запускает рендеринг на объекте для ключа - PullRequest
0 голосов
/ 23 июня 2018

Мое приложение содержит несколько разговоров, каждый разговор содержит собственные сообщения.

ChatScreen

const mapStateToProps = (state: any) => {
  return {chatMessages: state.chatMessages.messageByConversationId[state.chatMessages.conversationId]};
}

При загрузке сообщения редуктор:

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

Это работает отлично! Когда сообщения размещаются, экранные триггеры перерисовываются.

Проблема начинается, когда я пытаюсь добавить ChatMessage:

export const addChatMessage: Reducer<ImmutableChatMessagesState> = (
  state: ImmutableChatMessagesState,
  { payload }: AnyAction & { payload?: AddChatMessageParams }) => {
  return payload
    ? {
      ...state,
      messageByConversationId: {
        ...state.messageByConversationId,
        [payload.conversationId]: [...state.messageByConversationId[payload.conversationId], payload.chatMessage],
      },
    }
    : state;

На этот раз я вижу, что обновление прошло успешно, а счетчик сообщений ChatMessages (на приставке) увеличился на +1. Но рендер не запускает экран от рендеринга.

Как правильно это сделать?

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