在React中使用useDebounce实现搜索功能的步骤如下:
npm install react-hooks
import React, { useEffect, useState } from 'react';
const useDebounce = (value, delay) => {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
const timer = setTimeout(() => {
setDebouncedValue(value);
}, delay);
return () => {
clearTimeout(timer);
};
}, [value, delay]);
return debouncedValue;
};
const SearchComponent = () => {
const [searchTerm, setSearchTerm] = useState('');
const debouncedSearchTerm = useDebounce(searchTerm, 500);
const [searchResults, setSearchResults] = useState([]);
useEffect(() => {
// 在这里可以进行搜索请求,例如调用API获取搜索结果
// 以下是一个示例,你可以根据实际情况进行修改
const search = async () => {
try {
const response = await fetch(`https://api.example.com/search?q=${debouncedSearchTerm}`);
const data = await response.json();
setSearchResults(data.results);
} catch (error) {
console.error(error);
}
};
search();
}, [debouncedSearchTerm]);
const handleSearchInputChange = (event) => {
setSearchTerm(event.target.value);
};
return (
<div>
<input type="text" value={searchTerm} onChange={handleSearchInputChange} />
<ul>
{searchResults.map((result) => (
<li key={result.id}>{result.title}</li>
))}
</ul>
</div>
);
};
在上述代码中,我们使用了一个输入框来接收用户输入的搜索关键字。每当输入框的值发生变化时,通过setSearchTerm更新searchTerm的值。然后,useDebounce钩子函数会将searchTerm的值进行防抖处理,并返回防抖后的值debouncedSearchTerm。最后,我们使用useEffect来监听debouncedSearchTerm的变化,并在变化时进行搜索请求,将搜索结果保存在searchResults中。
这样,当用户输入搜索关键字时,会进行防抖处理,只有在用户停止输入一段时间后才会发起搜索请求,避免频繁的请求。同时,搜索结果也会实时更新并展示在页面上。
推荐的腾讯云相关产品:腾讯云函数(Serverless Cloud Function),腾讯云API网关(API Gateway),腾讯云云数据库MySQL版(TencentDB for MySQL)。
腾讯云函数(Serverless Cloud Function):https://cloud.tencent.com/product/scf
腾讯云API网关(API Gateway):https://cloud.tencent.com/product/apigateway
腾讯云云数据库MySQL版(TencentDB for MySQL):https://cloud.tencent.com/product/cdb
领取专属 10元无门槛券
手把手带您无忧上云