tangled
alpha
login
or
join now
t1c.dev
/
rocksky
forked from
rocksky.app/rocksky
2
fork
atom
A decentralized music tracking and discovery platform built on AT Protocol 🎵
2
fork
atom
overview
issues
pulls
pipelines
fix debounce issue
tsiry-sandratraina.com
1 year ago
7b149b92
98791ca8
+12
-11
1 changed file
expand all
collapse all
unified
split
rockskyweb
src
layouts
Search
Search.tsx
+12
-11
rockskyweb/src/layouts/Search/Search.tsx
···
5
5
import { Input } from "baseui/input";
6
6
import { PLACEMENT, Popover } from "baseui/popover";
7
7
import _ from "lodash";
8
8
-
import { useEffect, useState } from "react";
8
8
+
import { useCallback, useEffect, useState } from "react";
9
9
import { Controller, useForm } from "react-hook-form";
10
10
import { Link as DefaultLink } from "react-router";
11
11
import z from "zod";
···
45
45
46
46
const keyword = watch("keyword");
47
47
48
48
+
// eslint-disable-next-line react-hooks/exhaustive-deps
49
49
+
const debouncedSearch = useCallback(
50
50
+
_.debounce(async (keyword) => {
51
51
+
const data = await search(keyword);
52
52
+
setResults(data.records);
53
53
+
}, 300),
54
54
+
[search]
55
55
+
);
56
56
+
48
57
useEffect(() => {
49
58
if (keyword.length === 0) {
50
59
setResults([]);
51
51
-
}
52
52
-
53
53
-
if (keyword.length > 1) {
54
54
-
const _search = async () => {
55
55
-
const data = await search(keyword);
56
56
-
setResults(data.records);
57
57
-
};
58
58
-
59
59
-
// debounce
60
60
-
_.debounce(_search, 100)();
60
60
+
} else if (keyword.length > 1) {
61
61
+
debouncedSearch(keyword);
61
62
}
62
63
// eslint-disable-next-line react-hooks/exhaustive-deps
63
64
}, [keyword]);