From f4441e2a553b3a7ffd1d3aea10f3b3da9f9c2e4e Mon Sep 17 00:00:00 2001 From: icarus Date: Tue, 14 Oct 2025 18:15:43 +0800 Subject: [PATCH] fix(MinAppPage): use startTransition to avoid synchronously setState in useEffect fix: Error: Calling setState synchronously within an effect can trigger cascading renders --- src/renderer/src/pages/minapps/MinAppPage.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/pages/minapps/MinAppPage.tsx b/src/renderer/src/pages/minapps/MinAppPage.tsx index ad70ad0da4..aa121442a9 100644 --- a/src/renderer/src/pages/minapps/MinAppPage.tsx +++ b/src/renderer/src/pages/minapps/MinAppPage.tsx @@ -7,7 +7,7 @@ import TabsService from '@renderer/services/TabsService' import { getWebviewLoaded, onWebviewStateChange, setWebviewLoaded } from '@renderer/utils/webviewStateManager' import { Avatar } from 'antd' import { WebviewTag } from 'electron' -import { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { FC, startTransition, useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useNavigate, useParams } from 'react-router-dom' import BeatLoader from 'react-spinners/BeatLoader' import styled from 'styled-components' @@ -144,7 +144,10 @@ const MinAppPage: FC = () => { if (!app) return if (getWebviewLoaded(app.id)) { // 已经加载 - if (!isReady) setIsReady(true) + if (!isReady) + startTransition(() => { + setIsReady(true) + }) return } let mounted = true