Мое приложение содержит несколько разговоров, каждый разговор содержит собственные сообщения.
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.
Но рендер не запускает экран от рендеринга.
Как правильно это сделать?