Бесконечная разбивка на страницы прокрутки с использованием прослушивателя событий onScrollMore и fetchMore - PullRequest
0 голосов
/ 20 сентября 2018
const MoreCommentsQuery = gql`
  query MoreComments($cursor: String) {
    moreComments(cursor: $cursor) {
      cursor
      comments {
        author
        text
      }
    }
  }
`;

const CommentsWithData = () => (
  <Query query={CommentsQuery}>
    {({ data: { comments, cursor }, loading, fetchMore }) => (
      <Comments
        entries={comments || []}
        onLoadMore={() =>
          fetchMore({
            // note this is a different query than the one used in the
            // Query component
            query: MoreCommentsQuery,
            variables: { cursor: cursor },
            updateQuery: (previousResult, { fetchMoreResult }) => {
              const previousEntry = previousResult.entry;
              const newComments = fetchMoreResult.moreComments.comments;
              const newCursor = fetchMoreResult.moreComments.cursor;

              return {
                // By returning `cursor` here, we update the `fetchMore` function
                // to the new cursor.
                cursor: newCursor,
                entry: {
                  // Put the new comments in the front of the list
                  comments: [...newComments, ...previousEntry.comments]
                }
              };
            }
          })
        }
      />
    )}
  </Query>
);

Это часть кода, взятая из документации apollo.Я в замешательстве насчет некоторых реквизитов?Является ли onLoadMore слушателем событий javascript?Я никогда в жизни не видел этого раньше.Для этого курсора, как это должно быть реализовано на серверной части?Есть ли лучшая документация по updateQuery, что она делает?Запись возвращается обратно в функцию fetchMore и что это делает?

...