reactjs - 类型错误:通过 API 映射时无法读取未定义
问题描述
我正在开发一个使用 NYT books API 的 React 应用程序(它将是一个可搜索的应用程序)。我成功添加了它,但是当我按照我的教程映射 API 时,我收到一个错误类型错误无法读取未定义的映射。
我查看了 API 的 JSON 以确保我使用点表示法调用了正确的字段,看起来我是这样,并且我还尝试了其他几个选项。我的代码如下,谢谢!
import React, {useEffect, useState} from 'react';
import './App.css';
import Book from './Book.js';
const App = () => {
const APP_ID = "4f3f9c74-74cd-4bc4-a21d-80ac92d41a29";
const [books, setBooks] = useState([]);
useEffect (()=> {
getBooks();
},[]);
const getBooks = async () => {
const response = await fetch("https://api.nytimes.com/svc/books/v3/lists/current/hardcover-fiction.json?api-key=hAzLGYxE9ydMH30QAdJYNIF333jiz0nX");
const data = await response.json();
console.log(data);
};
return(
<div className="App">
<form className="search-form">
<input className="search-bar" type="text"></input>
<button className="search-button" type="submit">Search</button>
</form>
{Object.results.books.map(book =>(
<Book />
))}
</div>
);
};
export default App;
解决方案
在您的应用呈现时,数据尚未准备好,因为您正在发出网络请求
尝试使用三元运算符
data ? data.map(()=>{
//
})
: null
对于您的情况,我不包含您的响应数据,因此请尝试以下两个片段中的任何一个:
{Object ? Object.results.books.map(book =>(
<Book />
)) : null}
或者
{Objec.results ? Object.results.books.map(book =>(
<Book />
)) : null}
推荐阅读
- kubernetes - k8 pod 优先级和测试
- python - 由 bs4 和正则表达式元素创建的 pandas 对象被打印为 python 列表
- java - Mockito/PowerMockito 检查退货
- python - 如何将雪人形状的轮廓分成两个圆圈
- java - Android MVVM 存储库和 ViewModel 问题
- javascript - 有人可以向我解释这段代码吗?关于有条件地禁用输入
- arrays - 应用程序被杀死时,数据没有保存在对象中
- sql - 获取 SQL 代码中的条件更新值
- python - 为什么在 python 中运行多个线程时打印会混乱?
- azure - 在 Active Directory 应用程序中使用的 Azure Graph API 的活动/审核日志