J'avais l'habitude de poster des requêtes pour obtenir des données parce que je voulais récupérer des données du serveur en envoyant des filtres.
Comment puis-je annuler mes promesses ? Récupérer des données via le bouton onClick dans Reactjs ?
Est-il correct d'utiliser la méthode HTTP post pour sélectionner des données lorsque l'on dispose de plusieurs paramètres pour filtrer les données ?
J'ai trouvé l'adresse mais elle ne fonctionne pas :
const CancelToken = axios.CancelToken;
let cancel;
function handleProductSearch() {
var newModel=searchProductFilter;
const token = localStorage.token;
if (token) {
// Cancel previous request
if (cancel !== undefined) {
cancel();
setLoadingListResSrch(false)
}
axios.post(baseUrl + 'Basic/ProductSearch', newModel, {
cancelToken: new CancelToken(function executor(c) {
cancel = c;
}),
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'Authorization': `Bearer ${token}`
},
credentials: 'same-origin',
}) .then(response => {
setLoadingListResSrch(false)
if (response.data.length === 0) {
setGoodListResSrch(response.data.result);
}
}) .catch(error => {
setLoadingListResSrch(false)
debugger;
if (axios.isCancel(error)) {
console.log("post Request canceled");
return;
} return;
});
}
}
et je veux que lorsque l'utilisateur clique sur le nouveau bouton, la requête précédente soit annulée.
<FormGroup className="mb-2 ml-sm-2 mb-sm-2">
<div color="seccess" size="sm" className="btn btn-info m-3"
onClick={handleAbrotProductSearch}>
new search</div>
</FormGroup>
const handleAbrotProductSearch = useCallback(() => {
handleProductSearch());
}, [handleProductSearch]);