React & React NativeHooksCommentsuseProfileCommentsData

useProfileCommentsData

Overview

The useProfileCommentsData hook provides a higher-level abstraction for fetching and managing user comments. Unlike the lower-level useFetchComments hook, this hook centralizes the logic for pagination, sorting, and state management, making it easier to implement a complete comments feed for a user profile.

Usage Example

import { useProfileCommentsData } from "@replyke/react-js";
 
function UserComments({ userId }: { userId: string }) {
  const {
    comments,
    loading,
    hasMore,
    sortBy,
    setSortBy,
    loadMore,
  } = useProfileCommentsData({ userId, limit: 10, defaultSortBy: "new" });
 
  return (
    <div>
      <select
        value={sortBy}
        onChange={(e) => setSortBy(e.target.value as "new" | "top")}
      >
        <option value="new">Newest</option>
        <option value="top">Top</option>
      </select>
 
      <ul>
        {comments.map((comment) => (
          <li key={comment.id}>{comment.content}</li>
        ))}
      </ul>
 
      {loading && <p>Loading...</p>}
      {hasMore && !loading && (
        <button onClick={loadMore}>Load More</button>
      )}
    </div>
  );
}

Parameters & Returns

Parameters

The hook accepts an object with the following fields:

ParameterTypeRequiredDescription
userIdstring | undefined | nullYesThe ID of the user whose comments are being fetched.
limitnumberNoThe number of comments to fetch per page. Default is 10.
defaultSortByCommentsSortByOptionsNoThe default sorting criteria for comments (e.g., new, top).
includeEntitybooleanNoWhether to include entity details in the fetched comments.

Returns

The hook returns an object with the following fields:

Return ValueTypeDescription
commentsCommentType[]The list of comments fetched so far.
loadingbooleanIndicates whether comments are being loaded.
hasMorebooleanIndicates whether there are more comments to fetch.
sortByCommentsSortByOptions | nullThe current sorting criteria for comments.
setSortBy(newSortBy: CommentsSortByOptions) => voidA function to update the sorting criteria.
loadMore() => voidA function to fetch the next page of comments.