Browse Source

fix: 形象生成,重新选择形象无法生成修复

王晓东 2 weeks ago
parent
commit
fb601a7ca1

+ 5 - 0
src/components/AvatarConfirm/index.tsx

@@ -64,6 +64,11 @@ export default function Index({ avatarItem, enabledChatBg, setEnabledChatBg, onC
     setEnabledChatBg(!enabledChatBg)
   }
 
+  useEffect(() => {
+    setAvatarData({ ...avatarItem, enabledChatBg });
+  }, [avatarItem, enabledChatBg]); // 依赖项数组,当这些依赖项变化时,effect 会重新执行
+
+
   return (
     <View>
       <View>

+ 4 - 3
src/pages/agent-gen/components/step/ResultSwiper.tsx

@@ -4,10 +4,11 @@ import { AvatarMedia } from "@/components/AvatarMedia";
 import { TAvatarItem } from "@/service/storage";
 import style from "./index.module.less";
 interface IProps {
-  avatarsList: TAvatarItem[]
+  avatarsList: TAvatarItem[],
+  currentSwiperIndex: number,
+  setCurrentSwiperIndex: (index: number)=> void
 }
-export default React.memo(function Index({ avatarsList }: IProps) {
-  const [currentSwiperIndex, setCurrentSwiperIndex] = useState(0);
+export default React.memo(function Index({ avatarsList, currentSwiperIndex, setCurrentSwiperIndex }: IProps) {
 
   const onSwiperChange = (e: any) => {
     const i = e.detail.current;

+ 3 - 3
src/pages/agent-gen/components/step/StepConfirm.tsx

@@ -11,13 +11,13 @@ interface IProps {
 
 
 
-export default React.memo(function Index({prev, pickedAvatar}:IProps) {
+export default function Index({prev, pickedAvatar}:IProps) {
   const currentItem = { ...(pickedAvatar || {}) }
   const agentEdit = useAgentStore((state) => state.agentEdit);
   const { saveAgent, updateEditAgent} = useAgentStoreActions();
   const [enabledChatBg, setEnabledChatBg] = useState(true)
 
-
+  console.log(pickedAvatar, currentItem)
   const handleConfirm = async (edit: TAvatarItem & { enabledChatBg: boolean }) => {
     if (edit.avatarLogo && edit.avatarUrl) {
       updateEditAgent({...edit})
@@ -68,4 +68,4 @@ export default React.memo(function Index({prev, pickedAvatar}:IProps) {
       onConfirm={handleConfirm} />}
   </>
   )
-});
+};

+ 6 - 4
src/pages/agent-gen/components/step/StepPick.tsx

@@ -19,7 +19,7 @@ interface IProps {
   setVideos: (avatars: TAvatarItem[])=> void
   taskId: string|number
 }
-export default React.memo(function Index({ prev, next, taskId, avatars, videos, setVideos, setAvatars, setPickedAvatar }: IProps) {
+export default function Index({ prev, next, taskId, avatars, videos, setVideos, setAvatars, setPickedAvatar }: IProps) {
   const [currentSwiperIndex, setCurrentSwiperIndex] = useState(0);
   const [shouldPoll, setShouldPoll] = useState(false);
   const [videoGenerating, setVideoGenerating] = useState(false);
@@ -68,7 +68,9 @@ export default React.memo(function Index({ prev, next, taskId, avatars, videos,
     }
     setPickedAvatar(pickedAvatar)
     console.log(pickedAvatar)
-    next()
+    setTimeout(()=> {
+      next()
+    }, 100)
   }
 
   const handlePrev = () => {
@@ -250,7 +252,7 @@ export default React.memo(function Index({ prev, next, taskId, avatars, videos,
   const renderContent = ()=> {
     if((avatars.length && !videoGenerating) || (videos.length)){
 
-      return <ResultSwiper avatarsList={avatarsList}  />
+      return <ResultSwiper avatarsList={avatarsList} currentSwiperIndex={currentSwiperIndex} setCurrentSwiperIndex={setCurrentSwiperIndex}  />
     }
 
     return <View className={`${style.pickAvatarCard} ${style.pickGenCard}`}>
@@ -283,4 +285,4 @@ export default React.memo(function Index({ prev, next, taskId, avatars, videos,
       </View>
     </View>
   );
-});
+};