mirror of
https://github.com/DrizzleTime/Foxel.git
synced 2026-08-28 03:29:35 +08:00
fix(AllImages): fix image loading
This commit is contained in:
@@ -10,15 +10,13 @@ const { Title } = Typography;
|
|||||||
|
|
||||||
function AllImages() {
|
function AllImages() {
|
||||||
const isMobile = useIsMobile();
|
const isMobile = useIsMobile();
|
||||||
const [images, setImages] = useState<PictureResponse[]>([]);
|
const [, setImages] = useState<PictureResponse[]>([]);
|
||||||
const [currentPage, setCurrentPage] = useState(1);
|
const [currentPage, setCurrentPage] = useState(1);
|
||||||
const [pageSize, setPageSize] = useState(20);
|
const [pageSize, setPageSize] = useState(20);
|
||||||
const [sortBy, setSortBy] = useState<string>('uploadDate_desc');
|
const [sortBy, setSortBy] = useState<string>('uploadDate_desc');
|
||||||
const [isUploadDialogVisible, setIsUploadDialogVisible] = useState(false);
|
const [isUploadDialogVisible, setIsUploadDialogVisible] = useState(false);
|
||||||
|
const [refreshTrigger, setRefreshTrigger] = useState(0);
|
||||||
// 使用useRef记忆sortBy值,避免重复渲染
|
|
||||||
const sortByRef = useRef(sortBy);
|
const sortByRef = useRef(sortBy);
|
||||||
|
|
||||||
// 优化handleSortChange,减少不必要的状态更新
|
// 优化handleSortChange,减少不必要的状态更新
|
||||||
const handleSortChange = (newSortBy: string) => {
|
const handleSortChange = (newSortBy: string) => {
|
||||||
if (sortBy !== newSortBy) {
|
if (sortBy !== newSortBy) {
|
||||||
@@ -27,10 +25,12 @@ function AllImages() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 使用useMemo创建稳定的queryParams对象
|
|
||||||
const queryParamsObject = useMemo(() => {
|
const queryParamsObject = useMemo(() => {
|
||||||
return { sortBy };
|
return {
|
||||||
}, [sortBy]);
|
sortBy,
|
||||||
|
refreshTrigger
|
||||||
|
};
|
||||||
|
}, [sortBy, refreshTrigger]);
|
||||||
|
|
||||||
const handleToggleFavorite = (image: PictureResponse) => {
|
const handleToggleFavorite = (image: PictureResponse) => {
|
||||||
// 只需处理 viewer 中的图片
|
// 只需处理 viewer 中的图片
|
||||||
@@ -49,6 +49,8 @@ function AllImages() {
|
|||||||
|
|
||||||
const handleUploadComplete = () => {
|
const handleUploadComplete = () => {
|
||||||
message.success('图片上传完成,刷新列表');
|
message.success('图片上传完成,刷新列表');
|
||||||
|
setRefreshTrigger(prev => prev + 1);
|
||||||
|
setImages([]);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 当分页变化时,保存当前浏览的页码
|
// 当分页变化时,保存当前浏览的页码
|
||||||
@@ -58,10 +60,8 @@ function AllImages() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleImagesLoaded = useCallback((loadedImages: PictureResponse[]) => {
|
const handleImagesLoaded = useCallback((loadedImages: PictureResponse[]) => {
|
||||||
if (images.length === 0) {
|
setImages(loadedImages);
|
||||||
setImages(loadedImages);
|
}, []);
|
||||||
}
|
|
||||||
}, [images.length]);
|
|
||||||
|
|
||||||
const sortMenu = {
|
const sortMenu = {
|
||||||
items: [
|
items: [
|
||||||
|
|||||||
Reference in New Issue
Block a user