about summary refs log tree commit diff
diff options
context:
space:
mode:
authordan <dan.abramov@gmail.com>2024-05-01 05:35:52 +0100
committerGitHub <noreply@github.com>2024-05-01 05:35:52 +0100
commit181e61bedb21003921fa21f6e8b86baf918d62bf (patch)
treef58a570df1aacf6b5c0d3dc070bcb948c2670005
parent31cb3e54222afc0b56e9d3e7997e2229797ff11e (diff)
downloadvoidsky-181e61bedb21003921fa21f6e8b86baf918d62bf.tar.zst
Memoize context value (#3786)
-rw-r--r--src/components/Portal.tsx13
-rw-r--r--src/state/preferences/label-defs.tsx8
2 files changed, 13 insertions, 8 deletions
diff --git a/src/components/Portal.tsx b/src/components/Portal.tsx
index d696f986b..03b397b2b 100644
--- a/src/components/Portal.tsx
+++ b/src/components/Portal.tsx
@@ -34,10 +34,17 @@ export function createPortalGroup() {
       setOutlet(<>{Object.values(map.current)}</>)
     }, [])
 
+    const contextValue = React.useMemo(
+      () => ({
+        outlet,
+        append,
+        remove,
+      }),
+      [outlet, append, remove],
+    )
+
     return (
-      <Context.Provider value={{outlet, append, remove}}>
-        {props.children}
-      </Context.Provider>
+      <Context.Provider value={contextValue}>{props.children}</Context.Provider>
     )
   }
 
diff --git a/src/state/preferences/label-defs.tsx b/src/state/preferences/label-defs.tsx
index d60f8ccb8..e24a1144a 100644
--- a/src/state/preferences/label-defs.tsx
+++ b/src/state/preferences/label-defs.tsx
@@ -1,5 +1,6 @@
 import React from 'react'
-import {InterpretedLabelValueDefinition, AppBskyLabelerDefs} from '@atproto/api'
+import {AppBskyLabelerDefs, InterpretedLabelValueDefinition} from '@atproto/api'
+
 import {useLabelDefinitionsQuery} from '../queries/preferences'
 
 interface StateContext {
@@ -13,10 +14,7 @@ const stateContext = React.createContext<StateContext>({
 })
 
 export function Provider({children}: React.PropsWithChildren<{}>) {
-  const {labelDefs, labelers} = useLabelDefinitionsQuery()
-
-  const state = {labelDefs, labelers}
-
+  const state = useLabelDefinitionsQuery()
   return <stateContext.Provider value={state}>{children}</stateContext.Provider>
 }