【发布时间】:2021-08-09 22:28:39
【问题描述】:
当用户在搜索功能中搜索用户时,我正在尝试使用 useDebounce。在这种情况下如何添加 useDebounce?
import { useDebounce } from "use-debounce";
const [searchQuery, setSearchQuery] = useState("");
const [invitees, setInvitees] = useState([]);
const handleChange = (event) => {
event.preventDefault();
setSearchQuery(event.target.value);
};
const getUserToInvite = async () => {
const res = await axios.get(
`/api/v1/search/users/invite/${searchQuery}/${teamId}`
);
setInvitees(res.data[0]);
setShowInvitees(!showInvitees);
};
useEffect(() => {
if (searchQuery === "") {
setInvitees([]);
}
if ((searchQuery || "").length >= 2) {
getUserToInvite();
}
}, [searchQuery]);
<input
className="invitees--search_input"
type="text"
name="name"
onChange={handleChange}
placeholder="Name"
aria-label="Search bar"
pattern="^[a-zA-Z0-9 ]+"
required
/>
如何在 React.js 中执行去抖动?
【问题讨论】:
-
我的猜测是您将 searchQuery 用于useDebounce 第一个参数并对结果值产生影响。去抖动并不能保证解析的顺序与请求的顺序相同,因此您的 UI 会得到 out of sync
标签: javascript reactjs react-hooks