"use client"; import React, { useEffect, useState } from "react"; import { JumboTabs, List, InfiniteScroll, Avatar, Toast, DotLoading, } from "antd-mobile"; // import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation"; import { useSearchParams } from "next/navigation"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faAngleLeft } from "@fortawesome/free-solid-svg-icons"; import styles from "./index.module.scss"; import { handleFollow } from "@/api/public"; import requireAPI from "@/utils/requireAPI"; import InfiniteScrollContent from "@/components/InfiniteScrollContent"; export default function Relationship() { const [currentKey, setCurrentKey] = useState(""); const [hasMore, setHasMore] = useState(1); // const router = useRouter(); const router = useRouter(); const searchParams = useSearchParams(); const [data, setData] = useState([]); const [offset, setOffset] = useState(0); // 获取屏幕高度 const scrollHeight = 600; useEffect(() => { if (currentKey) { setOffset(0); setData([]); getData(currentKey, 0).then((res) => { setData(res); }); } }, [currentKey]); useEffect(() => { const key = searchParams.get("key"); key && setCurrentKey(key); }, [searchParams]); async function loadMore(key) { const append = await getData(key, offset); setData((val) => [...val, ...append]); // setHasMore(append.length > 0); } const getData = async (key, currentOffset) => { // api/account_relation/list_is_followed const followIds = await requireAPI( "POST", `/api/account_relation/${ key == "follow" ? "list_follow" : "list_is_followed" }`, { body: { offset: currentOffset, limit: 12 }, }, true ); if (followIds.ret === -1) { Toast.show({ icon: "fail", content: data.msg, position: "top", }); return; } setOffset(followIds.data.offset); setHasMore(followIds.data.more); if (!followIds.data.list.length) return []; const followsMids = followIds.data.list.map((item) => item.obj_mid); const streamers = await requireAPI( "POST", `/api${ key == "follow" ? "/streamer/list_ext_by_mids" : "/account/list_others_by_mids" }`, { body: { mids: followsMids, offset: 0, limit: 12 }, }, true ); if (streamers.ret === -1) { Toast.show({ icon: "fail", content: data.msg, position: "top", }); return; } const followsDataList = streamers.data.list.map((item) => ({ ...item, isFollowed: true, })); return [...followsDataList]; // setMore(temData.data.more); }; const cancleFollow = async (item, index) => { await handleFollow(item.isFollowed, item.mid); const newData = [...data]; newData[index].isFollowed = !item.isFollowed; setData(newData); }; return (
关系
{item.name}
{item.bio}
{item.name}
{item.bio}