diff --git a/src/plays/emojipedia/Emojipedia.js b/src/plays/emojipedia/Emojipedia.js index b3572952f..09d588982 100644 --- a/src/plays/emojipedia/Emojipedia.js +++ b/src/plays/emojipedia/Emojipedia.js @@ -1,4 +1,4 @@ -import { useEffect, useState, useRef } from "react"; +import { useEffect, useState, useRef, useTransition } from "react"; import toast, { Toaster } from "react-hot-toast"; import { FiSearch } from "react-icons/fi"; @@ -13,11 +13,12 @@ function Emojipedia(props) { // Your Code Start below. const [emojisList, setEmojisList] = useState([]); const [query, setQuery] = useState(""); + const [isPending, startTransition] = useTransition(); const inputRef = useRef(null); - + // Fetch all the emojis const { data, loading, error } = useFetch(API_BASE_URL); - + const handleEmojiSearch = (e) => setQuery(e.target.value); // Copy emoji handler @@ -32,18 +33,18 @@ function Emojipedia(props) { useEffect(() => { const delayFn = setTimeout(() => { if (query) { - setEmojisList((prevEmojiList) => - prevEmojiList?.filter((emoji) => - emoji?.unicodeName?.toLowerCase().includes(query?.toLowerCase()) - ) - ); + startTransition(()=> { + setEmojisList(data.filter((emoji) => + emoji?.unicodeName?.toLowerCase().includes(query?.toLowerCase()) + ) + ); + }) } else { setEmojisList(data); } }, 300); - return () => clearTimeout(delayFn); - }, [query, data, emojisList]); + }, [query, data]); useEffect(() => { if (error) { @@ -85,7 +86,11 @@ function Emojipedia(props) { ? Array.from(Array(25).keys()).map((_, index) => ( )) - : emojisList?.map((emoji, index) => ( + : isPending ? + Array.from(Array(25).keys()).map((_, index) => ( + + )) : + emojisList?.map((emoji, index) => (