mirror of
https://github.com/supermemoryai/supermemory.git
synced 2026-04-28 03:29:59 +00:00
perf: wrap list/grid components in React.memo to skip unnecessary re-renders (#847)
This commit is contained in:
parent
5051658b85
commit
5cadf5c170
4 changed files with 16 additions and 10 deletions
|
|
@ -1,5 +1,6 @@
|
|||
"use client"
|
||||
|
||||
import { memo } from "react"
|
||||
import { Copy, Check } from "lucide-react"
|
||||
import type { UIMessage } from "@ai-sdk/react"
|
||||
|
||||
|
|
@ -9,7 +10,7 @@ interface UserMessageProps {
|
|||
onCopy: (messageId: string, text: string) => void
|
||||
}
|
||||
|
||||
export function UserMessage({
|
||||
export const UserMessage = memo(function UserMessage({
|
||||
message,
|
||||
copiedMessageId,
|
||||
onCopy,
|
||||
|
|
@ -38,4 +39,4 @@ export function UserMessage({
|
|||
</button>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
"use client"
|
||||
|
||||
import { useState } from "react"
|
||||
import { memo, useState } from "react"
|
||||
import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
|
||||
import type { z } from "zod"
|
||||
import { dmSansClassName } from "@/lib/fonts"
|
||||
|
|
@ -43,7 +43,11 @@ function getFileTypeInfo(document: DocumentWithMemories): {
|
|||
}
|
||||
}
|
||||
|
||||
export function FilePreview({ document }: { document: DocumentWithMemories }) {
|
||||
export const FilePreview = memo(function FilePreview({
|
||||
document,
|
||||
}: {
|
||||
document: DocumentWithMemories
|
||||
}) {
|
||||
const [imageError, setImageError] = useState(false)
|
||||
const { extension, color } = getFileTypeInfo(document)
|
||||
|
||||
|
|
@ -107,4 +111,4 @@ export function FilePreview({ document }: { document: DocumentWithMemories }) {
|
|||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
"use client"
|
||||
|
||||
import { useState } from "react"
|
||||
import { memo, useState } from "react"
|
||||
import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
|
||||
import type { z } from "zod"
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ type OgData = {
|
|||
image?: string
|
||||
}
|
||||
|
||||
export function WebsitePreview({
|
||||
export const WebsitePreview = memo(function WebsitePreview({
|
||||
document,
|
||||
ogData,
|
||||
}: {
|
||||
|
|
@ -40,4 +40,4 @@ export function WebsitePreview({
|
|||
) : null}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
"use client"
|
||||
|
||||
import { memo } from "react"
|
||||
import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
|
||||
import type { z } from "zod"
|
||||
import { dmSansClassName } from "@/lib/fonts"
|
||||
|
|
@ -9,7 +10,7 @@ import { extractYouTubeVideoId } from "../utils"
|
|||
type DocumentsResponse = z.infer<typeof DocumentsWithMemoriesResponseSchema>
|
||||
type DocumentWithMemories = DocumentsResponse["documents"][0]
|
||||
|
||||
export function YoutubePreview({
|
||||
export const YoutubePreview = memo(function YoutubePreview({
|
||||
document,
|
||||
}: {
|
||||
document: DocumentWithMemories
|
||||
|
|
@ -49,4 +50,4 @@ export function YoutubePreview({
|
|||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue