Membuat 디바운스 기능
2959 단어 reactjavascript
함수 useDebounce
import { useState, useEffect } from "react";
const useDebounce = (val: any, delay: number) => {
const [debounceVal, setDebounceVal] = useState(val);
useEffect(() => {
const handler = setTimeout(() => {
setDebounceVal(val);
}, delay);
return () => {
clearTimeout(handler);
};
}, [val]);
return debounceVal;
};
export default useDebounce;
콘토 세데르하나
import { useEffect, useState } from "react";
import useDebounce from "./use-debounce";
const listData = ["sabun", "minyak", "gula", "garam", "kopi"];
function App() {
const [results, setResults] = useState<string[]>([]);
const [text, setText] = useState("");
const debounce = useDebounce(text, 500);
useEffect(() => {
const filterData = listData.filter((obj) =>
obj.toLowerCase().includes(debounce)
);
setResults(filterData);
}, [debounce]);
return (
<div className="App">
<input
type="text"
value={text}
onChange={(e) => setText(e.target.value)}
/>
{results.length > 0 ? (
results.map((el: string, i: number) => <div key={i}>{el}</div>)
) : (
<div>no results</div>
)}
</div>
);
}
export default App;
데이터를 가져오는 Contoh menggunakan
import { useState } from "react";
import useDebounce from "./use-debounce";
import useFetch from "./use-fetch";
function App() {
const [text, setText] = useState("");
const debounce = useDebounce(text, 500);
const url = `http://www.omdbapi.com/?t=${debounce}`;
const {data, isLoading, error} = useFetch(url);
if(isLoading){
return <div>loading...</div>
}
if(error) {
return <div>{error}</div>
}
return (
<div className="App">
<input
type="text"
value={text}
onChange={(e) => setText(e.target.value)}
/>
{data.length > 0 ? (
data.map((el: string, i: number) => <div key={i}>{el}</div>)
) : (
<div>no results</div>
)}
</div>
);
}
export default App;
Reference
이 문제에 관하여(Membuat 디바운스 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ridhopamungkas/membuat-debounce-function-p7j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)