问题
app/deadlines/page.tsx 中每次搜索输入都在 filteredEvents useMemo 内重建 Fuse 索引:
const fuse = new Fuse(filtered, { keys: [...], threshold: 0.3 })
Fuse.js 索引构建是 O(n) 开销操作,随数据集增长(当前 39 条活动,数百条 timeline),每次按键都重建会导致输入卡顿。
修复
将 Fuse 实例提取为独立 useMemo,仅在筛选后的数据集变化时重建,搜索时只调用 fuse.search()(O(log n))。
同时移除了遗留的 console.log 调试语句。
branch: perf/fuse-memo
问题
app/deadlines/page.tsx中每次搜索输入都在filteredEventsuseMemo 内重建 Fuse 索引:Fuse.js 索引构建是 O(n) 开销操作,随数据集增长(当前 39 条活动,数百条 timeline),每次按键都重建会导致输入卡顿。
修复
将 Fuse 实例提取为独立
useMemo,仅在筛选后的数据集变化时重建,搜索时只调用fuse.search()(O(log n))。同时移除了遗留的
console.log调试语句。branch:
perf/fuse-memo