diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx index 9f91b368..6a789296 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -6,6 +6,7 @@ import type { ItemType } from 'antd/es/menu/hooks/useItems'; import { stringify } from 'querystring'; import type { MenuInfo } from 'rc-menu/lib/interface'; import React, { useCallback } from 'react'; +import { flushSync } from 'react-dom'; import HeaderDropdown from '../HeaderDropdown'; import styles from './index.less'; @@ -39,7 +40,9 @@ const AvatarDropdown: React.FC = ({ menu }) => { (event: MenuInfo) => { const { key } = event; if (key === 'logout') { - setInitialState((s) => ({ ...s, currentUser: undefined })); + flushSync(() => { + setInitialState((s) => ({ ...s, currentUser: undefined })); + }); loginOut(); return; } diff --git a/src/pages/User/Login/index.tsx b/src/pages/User/Login/index.tsx index 3a687388..6fd9b100 100644 --- a/src/pages/User/Login/index.tsx +++ b/src/pages/User/Login/index.tsx @@ -18,6 +18,7 @@ import { import { FormattedMessage, history, SelectLang, useIntl, useModel } from '@umijs/max'; import { Alert, message, Tabs } from 'antd'; import React, { useState } from 'react'; +import { flushSync } from 'react-dom'; import styles from './index.less'; const LoginMessage: React.FC<{ @@ -45,10 +46,12 @@ const Login: React.FC = () => { const fetchUserInfo = async () => { const userInfo = await initialState?.fetchUserInfo?.(); if (userInfo) { - await setInitialState((s) => ({ - ...s, - currentUser: userInfo, - })); + flushSync(() => { + setInitialState((s) => ({ + ...s, + currentUser: userInfo, + })); + }); } };