perf: improve inputbar button memorization

This commit is contained in:
one 2025-05-01 17:19:01 +08:00 committed by 亢奋猫
parent a068d36f87
commit 3a496a7d1f
4 changed files with 9 additions and 8 deletions

View File

@ -799,13 +799,13 @@ const Inputbar: FC<Props> = ({ assistant: _assistant, setActiveTopic, topic }) =
}
}, [assistant, model, updateAssistant])
const onMentionModel = (model: Model) => {
const onMentionModel = useCallback((model: Model) => {
setMentionModels((prev) => {
const modelId = getModelUniqId(model)
const exists = prev.some((m) => getModelUniqId(m) === modelId)
return exists ? prev.filter((m) => getModelUniqId(m) !== modelId) : [...prev, model]
})
}
}, [])
const onToggleExpended = () => {
if (textareaHeight) {

View File

@ -3,7 +3,7 @@ import { useAppSelector } from '@renderer/store'
import { KnowledgeBase } from '@renderer/types'
import { Tooltip } from 'antd'
import { FileSearch, Plus } from 'lucide-react'
import { FC, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react'
import { FC, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react'
import { useTranslation } from 'react-i18next'
import { useNavigate } from 'react-router'
@ -93,4 +93,4 @@ const KnowledgeBaseButton: FC<Props> = ({ ref, selectedBases, onSelect, disabled
)
}
export default KnowledgeBaseButton
export default memo(KnowledgeBaseButton)

View File

@ -10,7 +10,7 @@ import { Avatar, Tooltip } from 'antd'
import { useLiveQuery } from 'dexie-react-hooks'
import { first, sortBy } from 'lodash'
import { AtSign, Plus } from 'lucide-react'
import { FC, useCallback, useImperativeHandle, useMemo } from 'react'
import { FC, memo, useCallback, useImperativeHandle, useMemo } from 'react'
import { useTranslation } from 'react-i18next'
import { useNavigate } from 'react-router'
import styled from 'styled-components'
@ -143,7 +143,8 @@ const MentionModelsButton: FC<Props> = ({ ref, mentionModels, onMentionModel, To
)
}
export default MentionModelsButton
const ProviderName = styled.span`
font-weight: 500;
`
export default memo(MentionModelsButton)

View File

@ -7,7 +7,7 @@ import { Assistant, WebSearchProvider } from '@renderer/types'
import { hasObjectKey } from '@renderer/utils'
import { Tooltip } from 'antd'
import { Globe, Settings } from 'lucide-react'
import { FC, useCallback, useImperativeHandle, useMemo } from 'react'
import { FC, memo, useCallback, useImperativeHandle, useMemo } from 'react'
import { useTranslation } from 'react-i18next'
import { useNavigate } from 'react-router-dom'
@ -126,4 +126,4 @@ const WebSearchButton: FC<Props> = ({ ref, assistant, ToolbarButton }) => {
)
}
export default WebSearchButton
export default memo(WebSearchButton)