import React, { useState, useEffect } from 'react' import { View, Text, Image, ScrollView } from '@tarojs/components' import Taro from '@tarojs/taro' import { listShopGoodsFavorite } from '@/api/shop/shopGoodsFavorite' import type { ShopGoodsFavorite } from '@/api/shop/shopGoodsFavorite/model' import EmptyState from '@/components/common/EmptyState' import LoadMore from '@/components/common/LoadMore' import { getCompressedImageUrl } from '@/utils/image' definePageConfig({ navigationBarTitleText: '我的收藏', }) const FavoriteListPage: React.FC = () => { const [list, setList] = useState([]) const [loading, setLoading] = useState(false) const [page, setPage] = useState(1) const [finished, setFinished] = useState(false) useEffect(() => { loadFavorites(1) }, []) const loadFavorites = async (p: number) => { if (loading) return setLoading(true) try { const res = await listShopGoodsFavorite({ page: p, limit: 20 }) const newList = res || [] if (p === 1) { setList(newList) } else { setList(prev => [...prev, ...newList]) } setFinished(newList.length < 20) setPage(p) } catch { Taro.showToast({ title: '加载失败', icon: 'none' }) } setLoading(false) } const handleItemClick = (goodsId: number) => { Taro.navigateTo({ url: `/pages/shop/product-detail?id=${goodsId}` }) } const handleLoadMore = () => { if (!finished && !loading) { loadFavorites(page + 1) } } return ( {list.length > 0 ? ( {list.map(item => ( handleItemClick(item.goodsId!)} > {item.goodsName} ¥{item.salePrice || '0'} ))} ) : ( !loading && )} ) } export default FavoriteListPage