You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React.js调用Google Books API如何处理无结果、图书未找到的错误

无查询结果场景错误处理修改方案

1. 新增错误提示状态

首先在状态声明部分新增错误信息存储状态,同时修正原有书籍状态的笔误:

// 搜索关键词状态
const [query, setQuery] = useState('');
// 书籍列表状态(修正原笔误:原变量名book改为books,和后续setBooks匹配)
const [books, setBooks] = useState([]);
// 错误提示状态
const [error, setError] = useState('');

2. 调整接口请求回调逻辑

Google Books API 无查询结果时不会返回items字段,或返回空数组,需要在成功回调中新增判断逻辑:

const handleSubmit = (e) => {
  e.preventDefault();
  // 搜索前清空上一次的错误信息
  setError('');

  axios
    .get(`https://www.googleapis.com/books/v1/volumes?q=${query}&maxResults=40`)
    .then((res) => {
      console.log(res.data.items);
      // 新增无结果判断
      if (!res.data.items || res.data.items.length === 0) {
        setError('未找到匹配的图书,请更换搜索关键词后重试');
        setBooks([]);
        return;
      }
      // 有结果时正常赋值
      setBooks(res.data.items);
    })
    .catch((err) => {
      console.log(err.response);
      // 可选补充:网络/接口报错时也给出用户提示
      setError('搜索请求失败,请检查网络连接后重试');
    });
}

3. 渲染层新增错误提示展示

在页面对应位置加入错误信息展示逻辑,示例如下:

return (
  <div className="search-page">
    <form onSubmit={handleSubmit}>
      <input value={query} onChange={handleChange} placeholder="输入图书名称搜索" />
      <button type="submit">搜索</button>
    </form>

    {/* 错误提示展示 */}
    {error && <div className="error-notice">{error}</div>}

    {/* 书籍列表渲染 */}
    {books.length > 0 ? (
      <ul className="book-list">
        {books.map(book => (
          <li key={book.id}>
            <h3>{book.volumeInfo.title}</h3>
            <p>作者:{bookAuthors(book.volumeInfo.authors)}</p>
          </li>
        ))}
      </ul>
    ) : !error && query ? (
      <p>正在搜索中...</p>
    ) : null}
  </div>
)

内容的提问来源于stack exchange,提问作者user8248285

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:57:03