0.3.0.0
This commit is contained in:
+32
-18
@@ -1,7 +1,7 @@
|
||||
"use client"
|
||||
|
||||
import type React from "react"
|
||||
import { createContext, useContext, useState, useCallback, useEffect, useRef, Suspense } from "react"
|
||||
import { createContext, useContext, useState, useCallback, useEffect, useRef, Suspense, useMemo } from "react"
|
||||
import type { FamilyMember, FamilyTreeData } from "@/types/family"
|
||||
import { useSession } from "next-auth/react"
|
||||
import { useSearchParams } from "next/navigation"
|
||||
@@ -350,24 +350,38 @@ function FamilyProviderInner({ children }: { children: React.ReactNode }) {
|
||||
// })
|
||||
// }, [treeData, currentTree])
|
||||
|
||||
// 使用 useMemo 缓存 context value,避免不必要的重渲染
|
||||
const contextValue = useMemo(() => ({
|
||||
treeData,
|
||||
currentTree,
|
||||
getMember,
|
||||
addMember,
|
||||
updateMember,
|
||||
deleteMember,
|
||||
searchResults,
|
||||
searchMembers,
|
||||
loadData,
|
||||
resetData,
|
||||
isLoading,
|
||||
highlightedMemberId,
|
||||
setHighlightedMemberId,
|
||||
}), [
|
||||
treeData,
|
||||
currentTree,
|
||||
getMember,
|
||||
addMember,
|
||||
updateMember,
|
||||
deleteMember,
|
||||
searchResults,
|
||||
searchMembers,
|
||||
loadData,
|
||||
resetData,
|
||||
isLoading,
|
||||
highlightedMemberId,
|
||||
])
|
||||
|
||||
return (
|
||||
<FamilyContext.Provider
|
||||
value={{
|
||||
treeData,
|
||||
currentTree,
|
||||
getMember,
|
||||
addMember,
|
||||
updateMember,
|
||||
deleteMember,
|
||||
searchResults,
|
||||
searchMembers,
|
||||
loadData,
|
||||
resetData,
|
||||
isLoading,
|
||||
highlightedMemberId,
|
||||
setHighlightedMemberId,
|
||||
}}
|
||||
>
|
||||
<FamilyContext.Provider value={contextValue}>
|
||||
{children}
|
||||
</FamilyContext.Provider>
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user