import React, { useState, useMemo, useDeferredValue, render } from "react";
const items = Array.from(
{ length: 5000000 }, (_, i) => `Item ${i + 1}`
);
function SearchComponent() {
const [query, setQuery] = useState("");
// Delay applying the filter
const deferredQuery = useDeferredValue(query);
const filteredItems = useMemo(() =>
items.filter((item) =>
item.toLowerCase().includes(
deferredQuery.toLowerCase()
)
),
[deferredQuery]
);
console.log(deferredQuery)
return (
<div>
<input
type="text"
value={query}
onChange={(e) => setQuery(e.target.value)}
placeholder="Search..."
/>
<ul>
{filteredItems.slice(0, 20).map((item) => (
<li key={item}>{item}</li>
))}
</ul>
</div>
);
}
render(<SearchComponent />);
body {
padding: 16px;
font-size: 24px;
}
h1 {
font-size: 32px;
}