Мое приложение содержит несколько разговоров, в каждом разговоре есть собственные сообщения.
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. Но рендер не запускает Screen из рендеринга.
Каков правильный способ сделать это?
javascript,reactjs,react-native,redux,react-redux,
Мое приложение содержит несколько разговоров, в каждом разговоре есть собственные сообщения.
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. Но рендер не запускает Screen из рендеринга.
Каков правильный способ сделать это?
04JavaScript, reactjs, реагируют родной, перевождь, реагируют-перевождь,