Skip to content

Commit 31045d3

Browse files
authored
Fix: infinite re-render on table when computing foreign keys (supabase#39850)
fix infinite re-render on table editor
1 parent 268c29c commit 31045d3

File tree

1 file changed

+9
-5
lines changed
  • apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor

1 file changed

+9
-5
lines changed

apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { PostgresTable } from '@supabase/postgres-meta'
22
import { isEmpty, isUndefined, noop } from 'lodash'
3-
import { useEffect, useState } from 'react'
3+
import { useEffect, useMemo, useState } from 'react'
44
import { toast } from 'sonner'
55

66
import { DocsButton } from 'components/ui/DocsButton'
@@ -141,14 +141,18 @@ export const TableEditor = ({
141141
(constraint) => constraint.type === CONSTRAINT_TYPE.PRIMARY_KEY_CONSTRAINT
142142
)
143143

144-
const { data: foreignKeyMeta, isSuccess: isSuccessForeignKeyMeta } =
144+
const { data: foreignKeyMeta = [], isSuccess: isSuccessForeignKeyMeta } =
145145
useForeignKeyConstraintsQuery({
146146
projectRef: project?.ref,
147147
connectionString: project?.connectionString,
148148
schema: table?.schema,
149149
})
150-
const foreignKeys = (foreignKeyMeta ?? []).filter(
151-
(fk) => fk.source_schema === table?.schema && fk.source_table === table?.name
150+
const foreignKeys = useMemo(
151+
() =>
152+
foreignKeyMeta.filter(
153+
(fk) => fk.source_schema === table?.schema && fk.source_table === table?.name
154+
),
155+
[foreignKeyMeta, table]
152156
)
153157

154158
const onUpdateField = (changes: Partial<TableField>) => {
@@ -245,7 +249,7 @@ export const TableEditor = ({
245249
} else {
246250
const tableFields = generateTableFieldFromPostgresTable(
247251
table,
248-
foreignKeyMeta || [],
252+
foreignKeyMeta,
249253
isDuplicating,
250254
isRealtimeEnabled
251255
)

0 commit comments

Comments
 (0)