【发布时间】:2020-12-04 22:24:27
【问题描述】:
我曾经发布获取数据的请求,因为我想通过发送一些过滤器从服务器获取数据。
如何取消我的承诺通过 Reactjs 中的 onClick 按钮获取数据?
当我们有多个参数过滤数据时,使用HTTP post方法来选择数据是否正确?
我找到了地址,但它不起作用:
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;
});
}
}
我想当用户点击新按钮时取消之前的请求。
<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]);
【问题讨论】:
-
这能回答你的问题吗? How do I cancel an HTTP fetch() request?
-
没关系,但是我想用在HTTP post方法中,而AbortController在获取类型post时不起作用
标签: reactjs promise http-post fetch abort