index.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { Text, View } from "@tarojs/components";
  2. import CommentListItem from "./item";
  3. import { useEffect, useState } from "react";
  4. import { getCommentListApi } from "../../api/comment";
  5. const CommentList = ({ postId }) => {
  6. // const CommentList = ({ commentsData }) => {
  7. const [page, setPage] = useState(1);
  8. const [hasMore, setHasMore] = useState(true);
  9. const [commentsData, setCommentsData] = useState<any[]>([]);
  10. const [count, setCount] = useState(0);
  11. useEffect(() => {
  12. getCommentListApi({ post_id: postId }).then((res: any) => {
  13. if (res.code === 200) {
  14. setCommentsData(res.data.list);
  15. setCount(res.data.count);
  16. setHasMore(res.data.has_more);
  17. }
  18. });
  19. }, [postId]);
  20. // 加载更多
  21. const handleLoadMore = () => {
  22. setPage(page + 1);
  23. };
  24. useEffect(() => {
  25. getCommentListApi({ post_id: postId, page: page }).then((res: any) => {
  26. if (res.code === 200) {
  27. setCommentsData([...commentsData, ...res.data.list]);
  28. }
  29. });
  30. }, [page]);
  31. return (
  32. <View>
  33. <View className="text-[14px] text-[#949494] mt-[20px]">
  34. 共 {count} 条评论
  35. </View>
  36. <View className="mt-[10px] pb-[100px]">
  37. <CommentListItem commentData={commentsData} />
  38. {hasMore && (
  39. <View
  40. className="text-[14px] text-[#1874d0] mt-[10px] text-center"
  41. onClick={() => {
  42. handleLoadMore();
  43. }}
  44. >
  45. 加载更多
  46. </View>
  47. )}
  48. </View>
  49. </View>
  50. );
  51. };
  52. export default CommentList;