搜索开启 allowDuplicatesKey=true,目标设备广播包每秒到达数次且 RSSI 逐包变化——upsertDevice 的签名判重只拦"完全相同"的包,挡不住信号 强度变化。每包都会走 setDeviceMap → onDeviceListChange → React setState → 页面重渲染,搜到设备后以每秒数十次的频率打满渲染线程, 点击事件被排队到数百毫秒后处理,表现为"搜到设备就无法停搜索"。 - setDeviceMap 改用 emitDeviceListThrottled:数据实时合入 deviceMap, 通知 UI 压到每 300ms 一次 - resetDeviceMap/stopSearch 绕过节流立即冲刷:清空与最终帧不能延迟 - cleanupDiscovery 补清节流定时器 |
||
|---|---|---|
| config | ||
| docs | ||
| src | ||
| tests/unit | ||
| .editorconfig | ||
| .eslintrc.cjs | ||
| .gitignore | ||
| babel.config.js | ||
| package-lock.json | ||
| package.json | ||
| project.config.json | ||
| project.private.config.json | ||
| tsconfig.json | ||
| vitest.config.ts | ||