diff --git a/apps/web/src/pages/PluginCRUDPage.tsx b/apps/web/src/pages/PluginCRUDPage.tsx index ec0f3f2..fa897a1 100644 --- a/apps/web/src/pages/PluginCRUDPage.tsx +++ b/apps/web/src/pages/PluginCRUDPage.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState, useCallback } from 'react'; +import { useEffect, useState, useCallback, useMemo } from 'react'; import { useParams } from 'react-router-dom'; import { Table, @@ -305,8 +305,8 @@ export default function PluginCRUDPage({ } }; - // 动态生成列 - const columns = [ + // 动态生成列(memo 化避免输入搜索时重建) + const columns = useMemo(() => [ ...fields.slice(0, 5).map((f) => ({ title: f.display_name || f.name, dataIndex: f.name, @@ -315,7 +315,6 @@ export default function PluginCRUDPage({ sorter: f.sortable ? true : undefined, render: (val: unknown) => { if (typeof val === 'boolean') return val ? : ; - // 引用字段 → 显示解析后的标签 if (f.ref_entity) { const uuid = String(val ?? ''); if (!uuid || uuid === '-') return '-'; @@ -366,7 +365,7 @@ export default function PluginCRUDPage({ ), }, - ]; + ], [fields, resolvedLabels, labelMeta, hasDetailPage, handleDelete]); // 动态生成表单字段 const renderFormField = (field: PluginFieldSchema) => {