reactjs - 如果用户在搜索栏中输入不正确的查询格式,则反应句柄错误
问题描述
我构建了一个 React 应用程序,它从 New York Times Bestseller Books API 获取数据,并允许用户在发布日期之前搜索不同的列表。
NYTimes 构建了此 API,因此必须以 YYYY-MM-DD 格式输入日期以进行搜索查询。我在搜索栏中添加了一个占位符以通知用户正确的格式,但我想知道如果用户以不正确的格式输入日期(例如 MM-DD-YYYY),我该如何处理错误。目前该应用程序只是崩溃。
我应该提到这只是我的投资组合的个人/学生项目。
这是我的搜索栏的更新代码:
const [formData, setFormData] = React.useState({
date: "",
});
const getBestsellersByDate = async (date) => {
const response = await fetch(url + "/bestsellers/" + date, {
method: "get",
headers: {},
});
const fetchedBestsellers = await response.json();
dispatch({ type: "getBestsellers", payload: fetchedBestsellers });
};
const handleChange = (event) => {
setFormData({ ...formData, [event.target.name]: event.target.value });
};
const handleSubmit = (event) => {
event.preventDefault();
try {
if (Date.parse(formData.date)) {
// books index from search date
getBestsellersByDate(formData.date);
// date specs for list corresponding to search
getBestsellersArchiveDate(formData.date);
setFormData({
date: "",
});
}
} catch (error) {
event.preventDefault();
alert.error(
<div
style={{ background: "#cf6679", color: "#000000", padding: "5px" }}
>
Please log in!
</div>
);
console.log("enter valid date!");
}
};
<div className="search-form_container">
<Form inline onSubmit={handleSubmit}>
<Form.Control
type="text"
name="date"
pattern="/^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$/"
className="search-form mr-sm-2"
value={formData.date}
onChange={handleChange}
placeholder="YYYY-MM-DD"
/>
<button id="btn-search" type="submit">
Search
</button>
</Form>
</div>
解决方案
在你的handleSubmit
函数中使用它:
const handleSubmit = (event) => {
event.preventDefault();
if(Date.parse(formData.date)){
getBestsellersByDate(formData.date);
setFormData({
date: "",
});
} else {
console.log("enter valid date!!!");
}
};
它将尝试Date
从用户输入的字符串中解析 a,如果它是有效日期,它将调用 API,否则,它将 console.log 错误。显然,您可以使用其他组件(如snackbar
.
推荐阅读
- java - 如何将 @Lob 数据从 spring 保存到 Postgres 数据库中?
- google-apps-script - 如何使自定义函数不在 Google 表格中重新计算
- c# - 如何像 youtube 视频中的旋转物体一样旋转长圆柱体?(统一)
- javascript - React-Native 错误:无法从“index.js”解析模块“/screen/Welcome”:
- flutter - 使用颤振创建字母跟踪应用程序
- google-maps - google place api的“open_now”问题
- python-3.x - 子进程dpkg返回错误码(1)
- c++ - 为什么迭代 unordered::map 并添加新元素不会导致无限循环?
- ruby-on-rails - Errno::EADDRNOTAVAIL 从 Docker 上的 Rails 向 api 发送请求时
- python - 在这种情况下 self 会是什么?— 文档中没有任何地方说明 self 应该是什么