diff --git a/components/Chat/Chat.tsx b/components/Chat/Chat.tsx index 815bde1..fa6b69d 100644 --- a/components/Chat/Chat.tsx +++ b/components/Chat/Chat.tsx @@ -28,11 +28,11 @@ import HomeContext from '@/pages/api/home/home.context'; import Spinner from '../Spinner'; import { ChatInput } from './ChatInput'; import { ChatLoader } from './ChatLoader'; -import { ChatMessage } from './ChatMessage'; import { ErrorMessageDiv } from './ErrorMessageDiv'; import { ModelSelect } from './ModelSelect'; import { SystemPrompt } from './SystemPrompt'; import { TemperatureSlider } from './Temperature'; +import { MemoizedChatMessage } from './MemoizedChatMessage'; interface Props { stopConversationRef: MutableRefObject; @@ -464,7 +464,7 @@ export const Chat = memo(({ stopConversationRef }: Props) => { )} {selectedConversation?.messages.map((message, index) => ( - void diff --git a/components/Chat/MemoizedChatMessage.tsx b/components/Chat/MemoizedChatMessage.tsx new file mode 100644 index 0000000..125d23d --- /dev/null +++ b/components/Chat/MemoizedChatMessage.tsx @@ -0,0 +1,9 @@ +import { FC, memo } from "react"; +import { ChatMessage, Props } from "./ChatMessage"; + +export const MemoizedChatMessage: FC = memo( + ChatMessage, + (prevProps, nextProps) => ( + prevProps.message.content === nextProps.message.content + ) +); diff --git a/components/Markdown/MemoizedReactMarkdown.tsx b/components/Markdown/MemoizedReactMarkdown.tsx index 085df83..00cd26a 100644 --- a/components/Markdown/MemoizedReactMarkdown.tsx +++ b/components/Markdown/MemoizedReactMarkdown.tsx @@ -1,4 +1,9 @@ import { FC, memo } from 'react'; import ReactMarkdown, { Options } from 'react-markdown'; -export const MemoizedReactMarkdown: FC = memo(ReactMarkdown); +export const MemoizedReactMarkdown: FC = memo( + ReactMarkdown, + (prevProps, nextProps) => ( + prevProps.children === nextProps.children + ) +);