Я вызываю fetchmore, используя кнопку loadMore и нумерацию на основе курсора, как в слабом видео.
Проблема в том, что если я запускаю команду send для отправки сообщения, она создает сообщение столько раз, сколько вызывается fetchMore.
Есть идеи?
Раздел запроса:
<Query
query={GET_MESSAGES}
variables={{ chatID, limit: LIMIT, cursor }}
fetchPolicy="network-only"
>
{({ data, loading, error, subscribeToMore, fetchMore }) => {
if (loading) {
return <div style={{ height: "100%" }}>Loading</div>;
}
if (error) {
return <div>Error: {error.message}</div>;
}
if (!unsubscribe) {
unsubscribe = subscribeToMore({
document: NEW_MESSAGE_SUB,
variables: { chatID },
updateQuery: (prev, { subscriptionData }) => {
const { newMessageSubscribe } = subscriptionData.data;
console.log("SUBSCRIBE EXECUTED");
if (!newMessageSubscribe) {
return prev;
}
prev.getMessages.messages = [
newMessageSubscribe,
...prev.getMessages.messages
];
return prev;
}
});
}
return (
<Fragment>
{/* <Affix>{chatDate}</Affix> */}
<MessageList
messages={data.getMessages.messages}
handleEnd={this.handleEnd}
fetchMore={fetchMore}
messagesRef={this.messagesRef}
/>
</Fragment>
);
}}
</Query>
<InputForm chatID={chatID} />