"use client"; import React, { useState, useEffect, useCallback } from "react"; import { useRouter, useSearchParams } from "next/navigation"; import webviewBaseRequest from "@/utils/webviewBaseRequest"; import { Toast } from "antd-mobile"; import { InfiniteScroll } from "antd-mobile"; import { setCookie } from "cookies-next"; import copy from "@/utils/copy"; export default function LanternFestival() { const router = useRouter(); const searchParams = useSearchParams(); const getBase = useCallback( (webviewBase) => { let searchParamsObj = null; let currentBaseCode = searchParams.get("base"); if (currentBaseCode) { let currentBase = JSON.parse(currentBaseCode); searchParamsObj = { ...currentBase }; } return searchParamsObj || webviewBase; }, [searchParams] ); const [data, setData] = useState([]); const [more, setMore] = useState(true); const [offset, setOffset] = useState(0); const [isFetching, setIsFetching] = useState(true); const [isLoading, setIsLoading] = useState(false); const getData = async () => { if (isLoading) return; setIsLoading(true); const webviewBase = webviewBaseRequest(); let base = getBase(webviewBase); try { const response = await fetch(`/api/activity/zone_discount`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ ...base, offset: offset, limit: 10, }), }); const _data = await response.json(); if (_data.ret === -1) { Toast.show({ content: _data.msg, }); return; } setOffset(_data.data.offset); if (_data.data.more === 0) setMore(false); setData((prev) => [...prev, ..._data.data.list]); } catch (error) { console.error(error); } finally { setIsFetching(false); setIsLoading(false); } }; useEffect(() => { setTimeout(() => { getData(); }, 500); }, []); const InfiniteScrollContent = ({ hasMore }) => { return ( <> {hasMore ? ( <> 加载中... > ) : ( --- 我是有底线的 --- )} > ); }; const Card = ({ item }) => { return (
{item?.name}
空间原价{" "} ¥{item?.original_price / 100}
¥ {item?.price / 100}
活动已结束