diff --git a/Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/components/management/MaterialManagement.tsx b/Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/components/management/MaterialManagement.tsx index ac5cb140..65411fd6 100644 --- a/Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/components/management/MaterialManagement.tsx +++ b/Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/components/management/MaterialManagement.tsx @@ -3,7 +3,7 @@ import React, { useEffect, forwardRef, useImperativeHandle, - useCallback, + useRef, } from "react"; import { Button, Input, Card, message, Popconfirm, Pagination } from "antd"; import { @@ -56,6 +56,10 @@ const MaterialManagement = forwardRef>( total: 0, }); + // 使用 ref 来存储最新的分页状态 + const paginationRef = useRef(pagination); + paginationRef.current = pagination; + // 获取类型图标 const getTypeIcon = (type: string) => { switch (type) { @@ -71,36 +75,34 @@ const MaterialManagement = forwardRef>( }; // 获取素材列表 - const fetchMaterials = useCallback( - async (params?: MaterialListParams) => { - try { - setLoading(true); - const requestParams = { - page: pagination.current.toString(), - limit: pagination.pageSize.toString(), - ...params, - }; - const response = await getMaterialList(requestParams); - if (response) { - setMaterialsList(response.list || []); - setPagination(prev => ({ - ...prev, - total: response.total || 0, - })); - } else { - setMaterialsList([]); - message.error(response?.message || "获取素材列表失败"); - } - } catch (error) { - console.error("获取素材列表失败:", error); + const fetchMaterials = async (params?: MaterialListParams) => { + try { + setLoading(true); + const currentPagination = paginationRef.current; + const requestParams = { + page: currentPagination.current.toString(), + limit: currentPagination.pageSize.toString(), + ...params, + }; + const response = await getMaterialList(requestParams); + if (response) { + setMaterialsList(response.list || []); + setPagination(prev => ({ + ...prev, + total: response.total || 0, + })); + } else { setMaterialsList([]); - message.error("获取素材列表失败"); - } finally { - setLoading(false); + message.error(response?.message || "获取素材列表失败"); } - }, - [pagination], - ); + } catch (error) { + console.error("获取素材列表失败:", error); + setMaterialsList([]); + message.error("获取素材列表失败"); + } finally { + setLoading(false); + } + }; // 暴露方法给父组件 useImperativeHandle(ref, () => ({ @@ -142,12 +144,16 @@ const MaterialManagement = forwardRef>( current: page, pageSize: pageSize || prev.pageSize, })); + // 分页变化后立即获取数据 + setTimeout(() => { + fetchMaterials(); + }, 0); }; - // 组件挂载和分页变化时获取数据 + // 组件挂载时获取数据 useEffect(() => { fetchMaterials(); - }, [fetchMaterials]); + }, []); return (