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) => {