perf(Tabs): improve responsiveness when switching items rapidly

This commit is contained in:
one 2025-03-31 03:08:30 +08:00 committed by 亢奋猫
parent 1ce86c11ca
commit 9f11e7c22b
2 changed files with 14 additions and 7 deletions

View File

@ -13,7 +13,7 @@ import { hasTopicPendingRequests } from '@renderer/utils/queue'
import { Dropdown } from 'antd'
import { ItemType } from 'antd/es/menu/interface'
import { omit } from 'lodash'
import { FC, useCallback, useEffect, useState } from 'react'
import { FC, startTransition, useCallback, useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next'
import styled from 'styled-components'
@ -114,11 +114,16 @@ const AssistantItem: FC<AssistantItemProps> = ({ assistant, isActive, onSwitch,
const handleSwitch = useCallback(async () => {
await modelGenerating()
if (topicPosition === 'left' && clickAssistantToShowTopic) {
if (clickAssistantToShowTopic) {
if (topicPosition === 'left') {
EventEmitter.emit(EVENT_NAMES.SWITCH_TOPIC_SIDEBAR)
}
onSwitch(assistant)
} else {
startTransition(() => {
onSwitch(assistant)
})
}
}, [clickAssistantToShowTopic, onSwitch, assistant, topicPosition])
const assistantName = assistant.name || t('chat.default.name')

View File

@ -37,7 +37,7 @@ import { hasTopicPendingRequests } from '@renderer/utils/queue'
import { Dropdown, MenuProps, Tooltip } from 'antd'
import dayjs from 'dayjs'
import { findIndex } from 'lodash'
import { FC, useCallback, useMemo, useRef, useState } from 'react'
import { FC, startTransition, useCallback, useMemo, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next'
import styled from 'styled-components'
@ -146,7 +146,9 @@ const Topics: FC<Props> = ({ assistant: _assistant, activeTopic, setActiveTopic
const onSwitchTopic = useCallback(
async (topic: Topic) => {
// await modelGenerating()
startTransition(() => {
setActiveTopic(topic)
})
},
[setActiveTopic]
)