Как я могу остановить выполнение Мутации несколько раз после вызова fetchMore? - PullRequest
0 голосов
/ 12 ноября 2018

Я вызываю 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} />
...