import {useEffect, useState} from "react"; import {pageCmsArticle} from "@/api/cms/cmsArticle"; import {CmsArticle} from "@/api/cms/cmsArticle/model"; import Taro from '@tarojs/taro' import {useRouter} from '@tarojs/taro' import {Image} from '@nutui/nutui-react-taro' import {InfiniteLoading} from '@nutui/nutui-react-taro' import {getCmsNavigation} from "@/api/cms/cmsNavigation"; import {CmsNavigation} from "@/api/cms/cmsNavigation/model"; /** * 文章终极列表 * @constructor */ const List = () => { const {params} = useRouter(); const [navigation, setNavigation] = useState() const [page, setPage] = useState(1) const [hasMore, setHasMore] = useState(true) const [list, setList] = useState([]) const reload = async (currentPage = page) => { // 获取栏目ID const categoryId = Number(params.id); console.log('honor/list 请求数据 - 页码:', currentPage, '分类ID:', categoryId); // 当前栏目信息(只在第一页时获取) if (currentPage === 1) { const navs = await getCmsNavigation(categoryId); if (navs) { setNavigation(navs); Taro.setNavigationBarTitle({title: `${navs.title}`}) } } // 终极新闻列表 const articles = await pageCmsArticle({categoryId, page: currentPage}); console.log('honor/list 获取到数据:', articles); // 新闻列表 if (articles) { if (articles?.list && articles?.list.length > 0) { if (currentPage === 1) { // 第一页,直接设置 setList(articles.list); } else { // 后续页面,追加到现有列表 setList(prevList => { const newList = [...prevList, ...articles.list]; console.log('honor/list 合并后的列表长度:', newList.length); return newList; }); } setHasMore(true); } else { console.log('honor/list 没有更多数据了'); setHasMore(false); } } } const reloadMore = async () => { const nextPage = page + 1; console.log('honor/list 加载更多 - 下一页:', nextPage); Taro.showLoading({ title: '加载中...', }) setPage(nextPage); reload(nextPage).then().finally(() => { Taro.hideLoading(); }); } useEffect(() => { console.log('honor/list 初始化加载'); // 重置状态 setPage(1); setList([]); setHasMore(true); // 加载第一页数据 reload(1).then(); }, []) return ( 加载中 } loadMoreText={ <> 没有更多了 }>
{/* 标题 */}
{navigation?.categoryName}
{ // 终极文章列表 list.map((item, index) => { return (
Taro.navigateTo({url: `./detail?id=${item.articleId}`})} > { // 图片容器 item.image ? (
) :
} {/* 标题 */}

{item.title}

{item.comments || '暂无'}

) }) }
) } export default List