Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
January 16, 2023 06:59 pm GMT

React useDebounce

React , . , , . , React, useDebounce() .

-, Unsplash API. Github.

Unsplash

  1. Unsplash

   unsplash

, , 50 . . API.

  1. , , .

React . Vite.

npm create vite@latest

React JavaScript . npm i.

, .env .

 env

, . Vite, VITE.

VITE_ACCESS_KEY="your key"VITE_SECRET_KEY="your key"

App.jsx , :

import { useState } from "react";import "./App.css";function App() {  return <div className="App"></div>;}export default App;

search, .

import { useState } from "react";import "./App.css";function App() {  const [searchTerm, setSearchTerm] = useState("");  return (    <div className="App">      <div>        <label htmlFor="search-input">Search Unsplash images</label>        <input type="search" id="search-input" value={searchTerm} onChange={(e) => setSearchTerm(e.target.value)} />      </div>    </div>  );}export default App;

, Unsplash API , . useEffect searchTerm .

import { useState, useEffect } from "react";import "./App.css";function App() {  const [searchTerm, setSearchTerm] = useState("");  const handleSearch = () => {    console.log("searching for", searchTerm);  };  useEffect(() => {    handleSearch();  }, [searchTerm]);  return (    <div className="App">      <div>        <label htmlFor="search-input">Search Unsplash images</label>        <input type="search" id="search-input" value={searchTerm} onChange={(e) => setSearchTerm(e.target.value)} />      </div>    </div>  );}export default App;

? , :

Image description

, 50 . , API . , , . useDebounce! .

useDebounce()

useDebounce:

useDebounce

. , searchTerm . , , ( 500). useDebounce useEffect , , . :

function useDebounce(value, delay) {  // value and delay in ms (1000ms = 1s)  // debounced values  const [debouncedValue, setDebouncedValue] = useState(value);  useEffect(    () => {      // Update debounced value after delay      const t = setTimeout(() => {        setDebouncedValue(value);      }, delay);      // clean up the timeout after value changes      return () => {        clearTimeout(t);      };    },    [value, delay] // re-run if value or delay changes  );  return debouncedValue;}export default useDebounce;

, :

import { useState, useEffect } from "react";import "./App.css";import useDebounce from "./useDebounce";function App() {  const [searchTerm, setSearchTerm] = useState("");  const debouncedSearchTerm = useDebounce(searchTerm, 500);  const handleSearch = () => {    console.log("searching for", searchTerm);  };  useEffect(() => {    if (debouncedSearchTerm) {      handleSearch();    }  }, [debouncedSearchTerm]);  return (    <div className="App">      <div>        <label htmlFor="search-input">Search Unsplash images</label>        <input type="search" id="search-input" value={searchTerm} onChange={(e) => setSearchTerm(e.target.value)} />      </div>    </div>  );}export default App;

, ?

Unsplash

Unsplash.

import { useState, useEffect } from "react";import "./App.css";import useDebounce from "./useDebounce";const API_URL = "https://api.unsplash.com/search/photos";function App() {  const [searchTerm, setSearchTerm] = useState("");  const [results, setResults] = useState([]);  const debouncedSearchTerm = useDebounce(searchTerm, 500);  const handleSearch = async () => {    const response = await fetch(      `${API_URL}?query=${debouncedSearchTerm}&client_id=${import.meta.env.VITE_ACCESS_KEY}`    );    const data = await response.json();    return data.results;  };  useEffect(() => {    if (debouncedSearchTerm) {      handleSearch().then((results) => setResults(results));    }  }, [debouncedSearchTerm]);  return (    <div className="App">      <div>        <label htmlFor="search-input">Search Unsplash images</label>        <input type="search" id="search-input" value={searchTerm} onChange={(e) => setSearchTerm(e.target.value)} />      </div>      <div>        {results?.map((result) => (          <img key={result.id} src={result.urls.small} alt={result.alt_description} />        ))}      </div>    </div>  );}export default App;

, / . useDebounce . Github.


Original Link: https://dev.to/mukhammadsobirov/kastomnyi-react-khuk-usedebounce-2b3l

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To