
Bagaimanakah saya boleh melakukan nyahlantun?
Jawapan kepada soalan asal
Fungsi nyahlantun yang disediakan tidak berfungsi kerana ini tidak terikat pada fungsi handleOnChange. Untuk membetulkan perkara ini:
1 2 3 | handleOnChange: function (event) {
}.bind(this)
|
Salin selepas log masuk
Teknik nyahlantun moden
Janji dan cangkuk (disyorkan, 2019 )
1 2 3 4 5 6 7 8 | const SearchBox = React.createClass({
render: function () {
return <input type="search" name="p" onChange={this.handleOnChange} />;
},
handleOnChange: function (event) {
}
});
|
Salin selepas log masuk
Janji melenting
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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),
[]
);
};
|
Salin selepas log masuk
Panggil balik
Dengan sifat kelas ES6:
1 2 3 4 5 | class SearchBox extends React.Component {
method = debounce(() => {
});
}
|
Salin selepas log masuk
Dengan pembina kelas ES6:
1 2 3 4 5 6 7 | class SearchBox extends React.Component {
constructor(props) {
super(props);
this.method = debounce(this.method.bind(this), 1000);
}
method() { ... }
}
|
Salin selepas log masuk
Dengan ES5:
1 2 3 4 5 6 | var SearchBox = React.createClass({
method: function () {...},
componentWillMount: function () {
this.method = debounce(this.method.bind(this), 100);
},
});
|
Salin selepas log masuk
Mengendalikan pengumpulan acara dalam React
Dalam React, objek acara dikumpulkan dan boleh digunakan semula. Ini boleh membawa kepada isu apabila menggunakan nyahlantun atau pendikit, kerana sifat acara mungkin dikosongkan selepas panggilan balik acara dipanggil.
Untuk mengelakkan perkara ini, gunakan kaedah persist() pada objek acara. Ini akan menghalang acara daripada dikumpulkan dan membolehkan anda mengakses sifatnya secara tidak segerak.
1 2 3 4 | onClick = (e) => {
e.persist();
};
|
Salin selepas log masuk
Atas ialah kandungan terperinci Bagaimana untuk Debounce Berkesan dalam Aplikasi React?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!