From cb0256c8201401d1b2be644c9c583510365a8ef1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E8=80=81=E7=99=BD=E5=85=94?= Date: Sun, 28 Sep 2025 18:11:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=B4=A0=E6=9D=90=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=A8=A1=E5=9D=97=EF=BC=9A=E9=87=8D=E6=9E=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BD=BF?= =?UTF-8?q?=E7=94=A8useRef=E5=AD=98=E5=82=A8=E5=88=86=E9=A1=B5=E7=8A=B6?= =?UTF-8?q?=E6=80=81=EF=BC=8C=E7=AE=80=E5=8C=96fetchMaterials=E5=87=BD?= =?UTF-8?q?=E6=95=B0=EF=BC=8C=E6=8F=90=E5=8D=87=E4=BB=A3=E7=A0=81=E5=8F=AF?= =?UTF-8?q?=E8=AF=BB=E6=80=A7=E5=92=8C=E6=80=A7=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../management/MaterialManagement.tsx | 68 ++++++++++--------- 1 file changed, 37 insertions(+), 31 deletions(-) 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 (