fix(web): 整理记录维度按钮不随筛选消失,关键词延时写入不再冲掉刚选的条件
- 维度只在没有可选值又没选时隐藏;只有一个值照常显示,免得选了一个条件后别的按钮跳没。 - 搜索框的延时写 URL 只在关键词真变了时执行:否则它带着旧参数,会把 400ms 内刚点的维度条件冲掉。 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
This commit is contained in:
1 parent
550ac285f4
commit
20e7391b15
2 files changed
+5
-3
No files matched your search
@@ -25,8 +25,8 @@ export function RecordFilterChips({
|
|||||||
className="scroll-bleed -mx-1 flex min-w-0 gap-1.5 overflow-x-auto px-1 pb-0.5 [scrollbar-width:none]"
|
className="scroll-bleed -mx-1 flex min-w-0 gap-1.5 overflow-x-auto px-1 pb-0.5 [scrollbar-width:none]"
|
||||||
>
|
>
|
||||||
{dims
|
{dims
|
||||||
// 只有一个可选值又没选时不用筛(比如只有一个媒体库目录)
|
// 没有可选值又没选时不显示(比如还没有带分类的记录);随筛选变化按钮不跳动,只有一个值也照常显示
|
||||||
.filter((d) => d.options.length > 1 || !!values[d.key])
|
.filter((d) => d.options.length > 0 || !!values[d.key])
|
||||||
.map((d) => (
|
.map((d) => (
|
||||||
<DimButton key={d.key} dim={d} value={values[d.key] ?? ""} onChange={(x) => onChange(d.key, x)} />
|
<DimButton key={d.key} dim={d} value={values[d.key] ?? ""} onChange={(x) => onChange(d.key, x)} />
|
||||||
))}
|
))}
|
||||||
|
|||||||
@@ -386,10 +386,12 @@ export default function OrganizePage() {
|
|||||||
const byIds = useFileRecords({ ids }, ids.length > 0);
|
const byIds = useFileRecords({ ids }, ids.length > 0);
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const qc = useQueryClient();
|
const qc = useQueryClient();
|
||||||
|
// 只在关键词真变了时写 URL:否则这次延时写入会带着旧的查询参数,把刚点的维度条件冲掉
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (qInput.trim() === v.q) return;
|
||||||
const t = setTimeout(() => setFilter("q", qInput.trim()), 400);
|
const t = setTimeout(() => setFilter("q", qInput.trim()), 400);
|
||||||
return () => clearTimeout(t);
|
return () => clearTimeout(t);
|
||||||
}, [qInput, setFilter]);
|
}, [qInput, v.q, setFilter]);
|
||||||
// 时间筛选换成具体时刻只在切换时算一次,避免每次渲染查询键都变
|
// 时间筛选换成具体时刻只在切换时算一次,避免每次渲染查询键都变
|
||||||
const since = useMemo(() => sinceOf(v.time), [v.time]);
|
const since = useMemo(() => sinceOf(v.time), [v.time]);
|
||||||
const base: Omit<RecordFilters, "status"> = {
|
const base: Omit<RecordFilters, "status"> = {
|
||||||
|
|||||||
Reference in new issue
Block a user