【发布时间】:2021-04-15 07:35:25
【问题描述】:
我正在尝试验证地址:
line1: Yup.string()
.test(
"Address Line 1 Validation Test",
"Please enter valid Line 1 address",
async (line1: string) => {
let delayTimer = null;
let isValid = false;
const doSearch = () => {
clearTimeout(delayTimer);
delayTimer = setTimeout(async () => {
const { data } = await axios.get<{ status: string }>(
"https://maps.googleapis.com/maps/api/geocode/json?components=country:USA",
{
params: {
address: line1,
key: GEOCODE_API_KEY,
},
}
);
console.log("line1: ", line1);
console.log("data: ", data);
isValid = data.status === "OK" ? true : false;
}, 1000); // Will do the ajax stuff after 1000 ms, or 1 s
};
doSearch();
return isValid;
}
)
.required("Line 1 is required"),
我想像这样集成延迟搜索,这样我就不会在每次用户输入时都淹没我的 api:AJAX: Delay for search on typing in form field
但每次用户输入时它都会发出 api 请求。如何实现?
【问题讨论】:
标签: javascript yup