mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-23 18:10:26 +08:00
perf: improve inputbar button memorization
This commit is contained in:
parent
a068d36f87
commit
3a496a7d1f
@ -799,13 +799,13 @@ const Inputbar: FC<Props> = ({ assistant: _assistant, setActiveTopic, topic }) =
|
|||||||
}
|
}
|
||||||
}, [assistant, model, updateAssistant])
|
}, [assistant, model, updateAssistant])
|
||||||
|
|
||||||
const onMentionModel = (model: Model) => {
|
const onMentionModel = useCallback((model: Model) => {
|
||||||
setMentionModels((prev) => {
|
setMentionModels((prev) => {
|
||||||
const modelId = getModelUniqId(model)
|
const modelId = getModelUniqId(model)
|
||||||
const exists = prev.some((m) => getModelUniqId(m) === modelId)
|
const exists = prev.some((m) => getModelUniqId(m) === modelId)
|
||||||
return exists ? prev.filter((m) => getModelUniqId(m) !== modelId) : [...prev, model]
|
return exists ? prev.filter((m) => getModelUniqId(m) !== modelId) : [...prev, model]
|
||||||
})
|
})
|
||||||
}
|
}, [])
|
||||||
|
|
||||||
const onToggleExpended = () => {
|
const onToggleExpended = () => {
|
||||||
if (textareaHeight) {
|
if (textareaHeight) {
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { useAppSelector } from '@renderer/store'
|
|||||||
import { KnowledgeBase } from '@renderer/types'
|
import { KnowledgeBase } from '@renderer/types'
|
||||||
import { Tooltip } from 'antd'
|
import { Tooltip } from 'antd'
|
||||||
import { FileSearch, Plus } from 'lucide-react'
|
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 { useTranslation } from 'react-i18next'
|
||||||
import { useNavigate } from 'react-router'
|
import { useNavigate } from 'react-router'
|
||||||
|
|
||||||
@ -93,4 +93,4 @@ const KnowledgeBaseButton: FC<Props> = ({ ref, selectedBases, onSelect, disabled
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default KnowledgeBaseButton
|
export default memo(KnowledgeBaseButton)
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import { Avatar, Tooltip } from 'antd'
|
|||||||
import { useLiveQuery } from 'dexie-react-hooks'
|
import { useLiveQuery } from 'dexie-react-hooks'
|
||||||
import { first, sortBy } from 'lodash'
|
import { first, sortBy } from 'lodash'
|
||||||
import { AtSign, Plus } from 'lucide-react'
|
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 { useTranslation } from 'react-i18next'
|
||||||
import { useNavigate } from 'react-router'
|
import { useNavigate } from 'react-router'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
@ -143,7 +143,8 @@ const MentionModelsButton: FC<Props> = ({ ref, mentionModels, onMentionModel, To
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default MentionModelsButton
|
|
||||||
const ProviderName = styled.span`
|
const ProviderName = styled.span`
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
`
|
`
|
||||||
|
|
||||||
|
export default memo(MentionModelsButton)
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import { Assistant, WebSearchProvider } from '@renderer/types'
|
|||||||
import { hasObjectKey } from '@renderer/utils'
|
import { hasObjectKey } from '@renderer/utils'
|
||||||
import { Tooltip } from 'antd'
|
import { Tooltip } from 'antd'
|
||||||
import { Globe, Settings } from 'lucide-react'
|
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 { useTranslation } from 'react-i18next'
|
||||||
import { useNavigate } from 'react-router-dom'
|
import { useNavigate } from 'react-router-dom'
|
||||||
|
|
||||||
@ -126,4 +126,4 @@ const WebSearchButton: FC<Props> = ({ ref, assistant, ToolbarButton }) => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default WebSearchButton
|
export default memo(WebSearchButton)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user