Heim > Web-Frontend > js-Tutorial > Verringern der Serverlast durch Verwendung der Entprell-/Drosseltechnik in ReactJS

Verringern der Serverlast durch Verwendung der Entprell-/Drosseltechnik in ReactJS

DDD
Freigeben: 2025-01-15 22:33:44
Original
610 Leute haben es durchsucht

Decreasing server load by using debouncing/throttle technique in reactjs

Entprellen und Drosseln in React.js

Entprellen und Drosseln sind Techniken zur Leistungsoptimierung durch Steuerung der Häufigkeit der Funktionsausführung als Reaktion auf häufige Ereignisse (z. B. Tippen, Scrollen, Größenänderung).


1. Was ist Entprellen?

Entprellen verzögert die Ausführung einer Funktion, bis eine bestimmte Zeit seit ihrem letzten Aufruf vergangen ist.

Anwendungsfallbeispiel:

  • Sucheingabefeld: Vermeiden Sie, bei jedem Tastendruck einen API-Aufruf auszulösen.

Beispiel zum Entprellen in React

import React, { useState, useEffect } from 'react';

const DebouncedSearch = () => {
  const [searchTerm, setSearchTerm] = useState('');
  const [debouncedValue, setDebouncedValue] = useState('');

  useEffect(() => {
    const handler = setTimeout(() => {
      setDebouncedValue(searchTerm);
    }, 500); // Delay of 500ms

    return () => {
      clearTimeout(handler); // Cleanup on input change
    };
  }, [searchTerm]);

  useEffect(() => {
    if (debouncedValue) {
      console.log('API Call with:', debouncedValue);
      // Make API call here
    }
  }, [debouncedValue]);

  return (
    <input
      type="text"
      placeholder="Search..."
      value={searchTerm}
      onChange={(e) => setSearchTerm(e.target.value)}
    />
  );
};

export default DebouncedSearch;
Nach dem Login kopieren

2. Was ist Drosselung?

Drosselung stellt sicher, dass eine Funktion höchstens einmal in einem bestimmten Zeitintervall ausgeführt wird, unabhängig davon, wie oft sie in diesem Intervall ausgelöst wird.

Anwendungsfallbeispiel:

  • Scroll-Ereignis: Begrenzen Sie die Häufigkeit, mit der eine Funktion während eines Scroll-Ereignisses ausgelöst wird, um die Leistung zu verbessern.

Drosselungsbeispiel in React

import React, { useEffect } from 'react';

const ThrottledScroll = () => {
  useEffect(() => {
    const handleScroll = throttle(() => {
      console.log('Scroll event fired');
    }, 1000); // Execute at most once every 1000ms

    window.addEventListener('scroll', handleScroll);
    return () => {
      window.removeEventListener('scroll', handleScroll);
    };
  }, []);

  return <div>




<hr>

<h3>
  
  
  <strong>3. Using Libraries (Optional)</strong>
</h3>

<p>Instead of implementing custom debounce/throttle, you can use popular libraries like:</p>

<h4>
  
  
  <strong>Lodash</strong>
</h4>

<p>Install:<br>
</p>

<pre class="brush:php;toolbar:false">npm install lodash
Nach dem Login kopieren

Verwendung:

import { debounce, throttle } from 'lodash';

// Debounce Example
const debouncedFunc = debounce(() => console.log('Debounced!'), 500);

// Throttle Example
const throttledFunc = throttle(() => console.log('Throttled!'), 1000);
Nach dem Login kopieren

Reagieren-Nutzung

Installieren:

npm install react-use
Nach dem Login kopieren

Verwendung:

import { useDebounce, useThrottle } from 'react-use';

const Demo = () => {
  const [value, setValue] = useState('');
  const debouncedValue = useDebounce(value, 500);
  const throttledValue = useThrottle(value, 1000);

  useEffect(() => {
    console.log('Debounced:', debouncedValue);
    console.log('Throttled:', throttledValue);
  }, [debouncedValue, throttledValue]);

  return (
    <input
      value={value}
      onChange={(e) => setValue(e.target.value)}
      placeholder="Type something..."
    />
  );
};

export default Demo;
Nach dem Login kopieren

Hauptunterschiede

Feature Debouncing Throttling
Execution Executes once after the user stops firing events for a specified time. Executes at regular intervals during the event.
Use Cases Search input, resizing, form validation. Scroll events, button clicks, API polling.
Performance Reduces the number of function calls. Limits execution to once per interval.
Funktion
Entprellen

Drosselung Ausführung
    Wird einmal ausgeführt, nachdem der Benutzer für eine bestimmte Zeit mit dem Auslösen von Ereignissen aufgehört hat. Wird während des Ereignisses in regelmäßigen Abständen ausgeführt.
  • Anwendungsfälle
  • Sucheingabe, Größenänderung, Formularvalidierung. Scroll-Ereignisse, Schaltflächenklicks, API-Abfragen. Leistung Reduziert die Anzahl der Funktionsaufrufe. Begrenzt die Ausführung auf einmal pro Intervall.
  • Wann zu verwenden ist

    Entprellen: Wenn Sie die Ausführung verzögern möchten, bis der Benutzer eine Aktion stoppt (z. B. darauf wartet, dass die Eingabe beendet wird). Drosselung: Wenn Sie die Ausführungsrate steuern möchten (z. B. um eine reibungslose Scrollleistung sicherzustellen). Beide Techniken können bei richtiger Anwendung die Leistung und das Benutzererlebnis erheblich verbessern!

    Das obige ist der detaillierte Inhalt vonVerringern der Serverlast durch Verwendung der Entprell-/Drosseltechnik in ReactJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Quelle:dev.to
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage