import { View, Swiper, SwiperItem, Image } from "@tarojs/components"; import React, { useEffect, useState } from "react"; import style from "./index.module.less"; import IconStarColor from "@/components/icon/icon-star-color"; import { getUploadedAvatarStatus, TAvatarItem } from '@/service/storage' import useSWR from 'swr'; import Taro from "@tarojs/taro"; interface IProps { prev: () => void; next: () => void; setPickedAvatar: (pickedAvatar: TAvatarItem)=> void taskId: string|number } export default React.memo(function Index({ prev, next, taskId, setPickedAvatar }: IProps) { const [currentSwiperIndex, setCurrentSwiperIndex] = useState(0); const [avatars, setAvatars] = useState([]); const [shouldPoll, setShouldPoll] = useState(false); const goNext = () => { const pickedAvatar = avatars[currentSwiperIndex] setPickedAvatar(pickedAvatar) console.log(pickedAvatar) next() } Taro.hideLoading() const { data } = useSWR( shouldPoll ? `getUploadedAvatarStatus${taskId}` : null, ()=> getUploadedAvatarStatus(taskId), { revalidateOnFocus: false, refreshInterval: shouldPoll ? 3000 : 0, refreshWhenHidden: false, refreshWhenOffline: false, revalidateOnMount: false } ); useEffect(() => { setShouldPoll(true); return () => { setShouldPoll(false); }; }, []); useEffect(()=> { if(data?.data.status === 'success'){ setAvatars(data.data?.data.reverse()) setShouldPoll(false); } return ()=> { } }, [data]) const onSwiperChange = (e: any) => { const i = e.detail.current; setCurrentSwiperIndex(i); }; const renderSwipers = () => { const renderIndicator = (currentIndex: number) => { return ( <> {avatars.map((_item, index) => { return ( ); })} ); }; return ( onSwiperChange(e)} > {avatars.map(avatar => { return {avatar.isOriginal && 原图 } })} {/* */} {renderIndicator(currentSwiperIndex)} ); }; const renderContent = ()=> { if(avatars.length){ return renderSwipers() } return {" "} AI生成中 } return ( {renderContent()} 上一步 goNext()}> 使用这张 ); });