diff --git a/apps/h5-partner/src/components/OssUploadField.tsx b/apps/h5-partner/src/components/OssUploadField.tsx index 2e12feb..a958ba2 100644 --- a/apps/h5-partner/src/components/OssUploadField.tsx +++ b/apps/h5-partner/src/components/OssUploadField.tsx @@ -73,19 +73,23 @@ export default function OssUploadField({ const useWechatPicker = inWechat && (mediaType === 'IMAGE' || (mediaType === 'FILE' && acceptsImages(resolvedAccept))); const needsAuth = useWechatPicker && needsWechatAuth(profile, clientConfig) && wechatReady !== true; + const onWechatReadyChangeRef = useRef(onWechatReadyChange); + onWechatReadyChangeRef.current = onWechatReadyChange; useEffect(() => { if (!useWechatPicker) return; - void Promise.all([fetchPartnerProfile(), fetchClientConfig()]) - .then(([me, config]) => { - setProfile(me); - setClientConfig(config); - onWechatReadyChange?.(!!me.hasWechat); - }) + void fetchClientConfig() + .then(setClientConfig) .catch(() => { /* 未登录等场景由上传接口报错 */ }); - }, [useWechatPicker, onWechatReadyChange]); + if (wechatReady === true) return; + void fetchPartnerProfile() + .then(setProfile) + .catch(() => { + /* 未登录等场景由上传接口报错 */ + }); + }, [useWechatPicker, wechatReady]); useEffect(() => { if (!useWechatPicker || needsAuth) return; @@ -122,7 +126,7 @@ export default function OssUploadField({ if (result) { const me = await fetchPartnerProfile(); setProfile(me); - onWechatReadyChange?.(!!me.hasWechat); + if (me.hasWechat) onWechatReadyChangeRef.current?.(true); } } catch (e) { const text = e instanceof Error ? e.message : '微信授权失败'; diff --git a/apps/h5-partner/src/pages/StoreCreatePage.tsx b/apps/h5-partner/src/pages/StoreCreatePage.tsx index 661fa7c..dfc4209 100644 --- a/apps/h5-partner/src/pages/StoreCreatePage.tsx +++ b/apps/h5-partner/src/pages/StoreCreatePage.tsx @@ -1,4 +1,4 @@ -import { useEffect, useMemo, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; @@ -86,6 +86,10 @@ export default function StoreCreatePage() { const wechatReady = !!account?.hasWechat; + const handleWechatReadyChange = useCallback(() => { + void refresh(); + }, [refresh]); + const [params, setParams] = useSearchParams(); const saved = loadStoreDraft(accountId); @@ -717,7 +721,7 @@ export default function StoreCreatePage() { wechatReady={wechatReady} - onWechatReadyChange={() => { void refresh(); }} + onWechatReadyChange={handleWechatReadyChange} onChange={(coverUrl) => patchForm({ coverUrl })} @@ -753,7 +757,7 @@ export default function StoreCreatePage() { wechatReady={wechatReady} - onWechatReadyChange={() => { void refresh(); }} + onWechatReadyChange={handleWechatReadyChange} onChange={(nextUrl) => patchEnvPhotoUrl(index, nextUrl)} @@ -785,7 +789,7 @@ export default function StoreCreatePage() { wechatReady={wechatReady} - onWechatReadyChange={() => { void refresh(); }} + onWechatReadyChange={handleWechatReadyChange} onChange={(contractUrl) => patchForm({ contractUrl })}