Heim > Web-Frontend > js-Tutorial > Wie kann man in React-Anwendungen effektiv entprellen?

Wie kann man in React-Anwendungen effektiv entprellen?

Mary-Kate Olsen
Freigeben: 2024-12-09 16:05:11
Original
413 Leute haben es durchsucht

How to Effectively Debounce in React Applications?

Wie kann ich eine Entprellung durchführen?

Antwort auf die ursprüngliche Frage

Die bereitgestellte Entprellungsfunktion funktioniert nicht, da diese nicht an die gebunden ist handleOnChange-Funktion. Um dies zu beheben:

    handleOnChange: function(event) {
        // Make Ajax call
    }.bind(this)
Nach dem Login kopieren

Moderne Entprelltechniken

Versprechen und Haken (empfohlen, 2019)

const SearchBox = React.createClass({
render: function() {
return <input type=&quot;search&quot; name=&quot;p&quot; onChange={this.handleOnChange} />;
},
handleOnChange: function(event) {
    // Make Ajax call
  }
});
Nach dem Login kopieren

Versprechen Entprellen

import React from 'react';
import awesomeDebouncePromise from 'awesome-debounce-promise';

const SearchBox = () => {
    const [inputText, setInputText] = React.useState('');

    const debouncedSearch = React.useMemo(
        () => awesomeDebouncePromise(args => searchStarwarsHeroAsync(args), 300),
        []
    );

    // ...rest of SearchBox component
};
Nach dem Login kopieren

Rückrufe

Mit ES6-Klasseneigenschaften:

class SearchBox extends React.Component {
    method = debounce(() => {
        // ...
    });
}
Nach dem Login kopieren

Mit ES6-Klassenkonstruktor:

class SearchBox extends React.Component {
    constructor(props) {
        super(props);
        this.method = debounce(this.method.bind(this), 1000);
    }
    method() { ... }
}
Nach dem Login kopieren

Mit ES5:

var SearchBox = React.createClass({
    method: function() {...},
    componentWillMount: function() {
        this.method = debounce(this.method.bind(this), 100);
    },
});
Nach dem Login kopieren

Ereignisbehandlung Pooling in React

In React werden Ereignisobjekte gepoolt und können wiederverwendet werden. Dies kann bei der Verwendung von Debounce oder Throttle zu Problemen führen, da die Ereigniseigenschaften möglicherweise gelöscht werden, nachdem der Ereignisrückruf aufgerufen wurde.

Um dies zu vermeiden, verwenden Sie die Methode persist() für das Ereignisobjekt. Dadurch wird verhindert, dass das Ereignis gepoolt wird, und Sie können asynchron auf seine Eigenschaften zugreifen.

onClick = (e) => {
    e.persist();
    // ...
};
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann man in React-Anwendungen effektiv entprellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage