diff --git a/src/components/config/VisualConfigEditor.tsx b/src/components/config/VisualConfigEditor.tsx index 76a95bd..e397205 100644 --- a/src/components/config/VisualConfigEditor.tsx +++ b/src/components/config/VisualConfigEditor.tsx @@ -1,4 +1,4 @@ -import { useId, useMemo, useState, type ReactNode } from 'react'; +import { memo, useCallback, useId, useMemo, useState, type ReactNode } from 'react'; import { useTranslation } from 'react-i18next'; import { Button } from '@/components/ui/Button'; import { Input } from '@/components/ui/Input'; @@ -94,7 +94,7 @@ function Divider() { return
; } -function ApiKeysCardEditor({ +const ApiKeysCardEditor = memo(function ApiKeysCardEditor({ value, disabled, onChange, @@ -306,9 +306,9 @@ function ApiKeysCardEditor({
); -} +}); -function StringListEditor({ +const StringListEditor = memo(function StringListEditor({ value, disabled, placeholder, @@ -363,9 +363,9 @@ function StringListEditor({ ); -} +}); -function PayloadRulesEditor({ +const PayloadRulesEditor = memo(function PayloadRulesEditor({ value, disabled, protocolFirst = false, @@ -686,9 +686,9 @@ function PayloadRulesEditor({ ); -} +}); -function PayloadFilterRulesEditor({ +const PayloadFilterRulesEditor = memo(function PayloadFilterRulesEditor({ value, disabled, onChange, @@ -834,7 +834,7 @@ function PayloadFilterRulesEditor({ ); -} +}); export function VisualConfigEditor({ values, validationErrors, disabled = false, onChange }: VisualConfigEditorProps) { const { t } = useTranslation(); @@ -860,6 +860,20 @@ export function VisualConfigEditor({ values, validationErrors, disabled = false, validationErrors?.['streaming.nonstreamKeepaliveInterval'] ); + const handleApiKeysTextChange = useCallback((apiKeysText: string) => onChange({ apiKeysText }), [onChange]); + const handlePayloadDefaultRulesChange = useCallback( + (payloadDefaultRules: PayloadRule[]) => onChange({ payloadDefaultRules }), + [onChange] + ); + const handlePayloadOverrideRulesChange = useCallback( + (payloadOverrideRules: PayloadRule[]) => onChange({ payloadOverrideRules }), + [onChange] + ); + const handlePayloadFilterRulesChange = useCallback( + (payloadFilterRules: PayloadFilterRule[]) => onChange({ payloadFilterRules }), + [onChange] + ); + return (
@@ -965,7 +979,7 @@ export function VisualConfigEditor({ values, validationErrors, disabled = false, onChange({ apiKeysText })} + onChange={handleApiKeysTextChange} />
@@ -1206,7 +1220,7 @@ export function VisualConfigEditor({ values, validationErrors, disabled = false, onChange({ payloadDefaultRules })} + onChange={handlePayloadDefaultRulesChange} /> @@ -1219,7 +1233,7 @@ export function VisualConfigEditor({ values, validationErrors, disabled = false, value={values.payloadOverrideRules} disabled={disabled} protocolFirst - onChange={(payloadOverrideRules) => onChange({ payloadOverrideRules })} + onChange={handlePayloadOverrideRulesChange} /> @@ -1231,7 +1245,7 @@ export function VisualConfigEditor({ values, validationErrors, disabled = false, onChange({ payloadFilterRules })} + onChange={handlePayloadFilterRulesChange} />