Skip to content

perf: Fuse.js index rebuilt on every keystroke in deadlines page #12

Description

@luojiyin1987

问题

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions